Action hook with wrapper html

You want the has_action() function.

add_action(
  'category_promo_header',
  function () {
    echo 'hi there';
  }
);

if (has_action('category_promo_header')) {
  echo '<div>';
    do_action('category_promo_header');
  echo '</div>';
}

Comment that add_action and you should see that nothing is printed at all.