node:async_hooks provides AsyncLocalStorage, AsyncResource, and createHook from
Node’s async_hooks.
Example
js
import { AsyncLocalStorage } from "node:async_hooks";
const storage = new AsyncLocalStorage();
storage.run("request", async () => {
await null;
console.log(storage.getStore()); // request
queueMicrotask(() => console.log(storage.getStore())); // undefined
});
utf-8 · js · Lines: 8
Differences from Node
AsyncLocalStoragecontext is lost inqueueMicrotaskcallbacks andnode:fscallbacks.createHookcallbacks (init,before,after,destroy) fire for timers, immediates, and Promise continuations.
Reference
Status: Partial · 36 of 45 suite tests pass (80.0%) · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
async_hooks | module | Partial | hooks fire for timers/immediates/promises but not yet for TCP/HTTP/TLS native resources |
createHook() | function | Full | Creates a new AsyncHook instance |
executionAsyncId() | function | Full | Returns the asyncId of the current execution context |
triggerAsyncId() | function | Full | Returns the ID of the resource responsible for calling the callback that is currently being executed |
AsyncLocalStorage | property | Full | The AsyncLocalStorage class |
AsyncResource | property | Full | The AsyncResource class |
Tests: node-api node:async-hooks: 36 pass, 8 fail, 1 error, 3 skipped. Failing: test-async-hooks-destroy-on-gc.js, test-async-hooks-enable-recursive.js, test-async-hooks-fatal-error.js, test-async-hooks-http-parser-destroy.js, test-async-hooks-top-level-clearimmediate.js, test-async-local-storage-http-agent.js, test-async-local-storage-http-multiclients.js, test-async-local-storage-http-parser-leak.js, and 1 more.