diff --git a/lib/internal/async_hooks.js b/lib/internal/async_hooks.js index 7c10764a1bdba6..587e4d1b71549e 100644 --- a/lib/internal/async_hooks.js +++ b/lib/internal/async_hooks.js @@ -33,12 +33,14 @@ function triggerAsyncId() { function triggerIdScopeSync(id, block) { - const old = async_uid_fields[kCurrentTriggerId]; + let old = async_uid_fields[kCurrentTriggerId]; async_uid_fields[kCurrentTriggerId] = id; try { - return block(); + const ret = block(); + if (async_uid_fields[kCurrentTriggerId] !== id) old = null; + return ret; } finally { - async_uid_fields[kCurrentTriggerId] = old; + old && (async_uid_fields[kCurrentTriggerId] = old); } }