-
-
Notifications
You must be signed in to change notification settings - Fork 33.8k
Open
Labels
streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.
Description
Version
v20.0.0-pre (master)
Platform
Darwin MBP 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:37 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T6000 arm64
Subsystem
No response
What steps will reproduce the bug?
This fails as the catch is not called
{
let reached = false;
const ac = new AbortController();
let resolve;
const promise = new Promise((res) => resolve = res);
const stream = from((async function *() {
yield 1;
await promise;
reached = true;
})());
setTimeout(() => ac.abort(), 1000);
addAbortSignal(ac.signal, stream);
stream
.toArray({ signal: ac.signal })
.then(common.mustNotCall())
.catch(common.mustCall((e) => {
strictEqual(e.name, 'AbortError')
strictEqual(reached, false);
}));
}How often does it reproduce? Is there a required condition?
always
What is the expected behavior? Why is that the expected behavior?
to close the stream
What do you see instead?
error:
Mismatched <anonymous> function calls. Expected exactly 1, actual 0.
at Proxy.mustCall (/open-source/node/node-fork/test/common/index.js:407:10)
at Object.<anonymous> (/open-source/node/node-fork/test/parallel/test-stream-drop-take.js:30:19)
at Module._compile (node:internal/modules/cjs/loader:1287:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1341:10)
at Module.load (node:internal/modules/cjs/loader:1145:32)
at Module._load (node:internal/modules/cjs/loader:984:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
at node:internal/main/run_main_module:23:47
Additional information
If I omit the ``addAbortSignal(ac.signal, stream);, the stream.destroy` function is not even called
But when I add the abort signal (addAbortSignal(ac.signal, stream);) to the original stream it does get called but still, the test fails.
this is because we get to this line:
node/lib/internal/streams/from.js
Line 69 in 3a648af
| const { value, done } = await iterator.throw(error); |
but not to this:
node/lib/internal/streams/from.js
Line 70 in 3a648af
| await value; |
Metadata
Metadata
Assignees
Labels
streamIssues and PRs related to the stream subsystem.Issues and PRs related to the stream subsystem.