Skip to content

Commit 8f59c41

Browse files
marvinrogerruyadorno
authored andcommitted
stream: propagate AbortSignal reason
PR-URL: #55473 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: LiviaMedeiros <livia@cirno.name> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
1 parent 15dd43d commit 8f59c41

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

lib/internal/streams/pipeline.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ function pipelineImpl(streams, callback, opts) {
204204
validateAbortSignal(outerSignal, 'options.signal');
205205

206206
function abort() {
207-
finishImpl(new AbortError());
207+
finishImpl(new AbortError(undefined, { cause: outerSignal?.reason }));
208208
}
209209

210210
addAbortListener ??= require('internal/events/abort_listener').addAbortListener;

test/parallel/test-stream-pipeline.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1331,12 +1331,13 @@ const tsp = require('timers/promises');
13311331

13321332
{
13331333
const ac = new AbortController();
1334+
const reason = new Error('Reason');
13341335
const r = Readable.from(async function* () {
13351336
for (let i = 0; i < 10; i++) {
13361337
await Promise.resolve();
13371338
yield String(i);
13381339
if (i === 5) {
1339-
ac.abort();
1340+
ac.abort(reason);
13401341
}
13411342
}
13421343
}());
@@ -1349,6 +1350,7 @@ const tsp = require('timers/promises');
13491350
});
13501351
const cb = common.mustCall((err) => {
13511352
assert.strictEqual(err.name, 'AbortError');
1353+
assert.strictEqual(err.cause, reason);
13521354
assert.strictEqual(res, '012345');
13531355
assert.strictEqual(w.destroyed, true);
13541356
assert.strictEqual(r.destroyed, true);

0 commit comments

Comments
 (0)