I took a look at `enabledHooksExist()`, but as discussed in https://github.com/nodejs/node/pull/59873#issuecomment-3304866589 and https://github.com/nodejs/node/pull/60913, it seems to not work as intended at the moment: > Following the suggestion to use enabledHooksExist(), I spent quite some time on it and gave that a try—but found that it consistently returned true, even when no async hooks were active. So, I reverted to using getHookArrays()[0].length > 0, as it provides a more accurate reflection of the current hook state. --- `enabledHooksExist()` checks `async_hook_fields[kCheck] > 0`, but `kCheck` is intentionally set to `1` at Node.js startup, even when no user async hooks have been registered: From env.cc (L1763): https://github.com/nodejs/node/blob/e28656a6172c35d88a472e33894a11f0e9f98eee/src/env.cc#L1748-L1763 This means `enabledHooksExist()` **always** returns `true`, regardless of whether any `AsyncHook` instances have actually been created and enabled by user code. --- This behavior dates back to PR #15454 it seems, but even after going through that discussion, I don't really understand the reasoning behind it and the TODO that says we should revert this for LTS releases. I feel like `fields_[kCheck]` should instead be set to `0` during initialization. Should we just change that or add a new helper function that would essentially do `AsyncContextFrame.current() != null || getHookArrays()[0].length > 0`?