Closed
Description
Version
v22.7.0
Platform
Darwin poutine-mac 23.6.0 Darwin Kernel Version 23.6.0: Fri Jul 5 17:56:41 PDT 2024; root:xnu-10063.141.1~2/RELEASE_ARM64_T6000 arm64 arm Darwin
Subsystem
async_hooks
What steps will reproduce the bug?
node --experimental-async-context-frame -e "new async_hooks.AsyncLocalStorage().run({}, () => {})"
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?
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
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.