Skip to content

TypeError: Method Map.prototype.set called on incompatible receiver #<AsyncContextFrame> #54503

Closed
@bengl

Description

@bengl

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    async_hooksIssues and PRs related to the async hooks subsystem.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions