Closed bengl closed 1 week ago
I was excited about trying --experimental-async-context-frame
to check if it helps with open telemetry tracing overhead, and I just ran into this issue.
$ node --experimental-async-context-frame -e "new async_hooks.AsyncLocalStorage().run({}, () => {})"
node:internal/async_context_frame:56
this.set(store, data);
^
TypeError: Method Map.prototype.set called on incompatible receiver #<AsyncContextFrame>
at AsyncContextFrame.set (<anonymous>)
at new AsyncContextFrame (node:internal/async_context_frame:56:10)
at AsyncLocalStorage.enterWith (node:internal/async_local_storage/async_context_frame:24:19)
at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:30:10)
at [eval]:1:37
at runScriptInThisContext (node:internal/vm:209:10)
at node:internal/process/execution:118:14
at [eval]-wrapper:6:24
at runScript (node:internal/process/execution:101:62)
at evalScript (node:internal/process/execution:136:3)
Node.js v22.7.0
Version
v22.7.0
Platform
Subsystem
async_hooks
What steps will reproduce the bug?
How often does it reproduce? Is there a required condition?
100% always happens.
What is the expected behavior? Why is that the expected behavior?
The above command should just exit cleanly with no output.
What do you see instead?
Additional information
While the test suite includes the running of async-local-storage tests with the flag enabled, it doesn't actually check whether those files actually passed or failed. It just runs them. That's why this wasn't caught.
I think I have a fix ready. I'm just waiting on a compile to verify.