Skip to content

Commit 538582b

Browse files
mcollinacodebytere
authored andcommitted
Revert "stream: fix async iterator destroyed error propagation"
This reverts commit d15b8ea. PR-URL: #31508 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Anatoli Papirovski <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Benjamin Gruenbaum <[email protected]>
1 parent 39c86bb commit 538582b

File tree

2 files changed

+11
-30
lines changed

2 files changed

+11
-30
lines changed

lib/internal/streams/async_iterator.js

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,20 +114,18 @@ const ReadableStreamAsyncIteratorPrototype = ObjectSetPrototypeOf({
114114
}
115115

116116
if (this[kStream].destroyed) {
117+
// We need to defer via nextTick because if .destroy(err) is
118+
// called, the error will be emitted via nextTick, and
119+
// we cannot guarantee that there is no error lingering around
120+
// waiting to be emitted.
117121
return new Promise((resolve, reject) => {
118-
if (this[kError]) {
119-
reject(this[kError]);
120-
} else if (this[kEnded]) {
121-
resolve(createIterResult(undefined, true));
122-
} else {
123-
finished(this[kStream], (err) => {
124-
if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
125-
reject(err);
126-
} else {
127-
resolve(createIterResult(undefined, true));
128-
}
129-
});
130-
}
122+
process.nextTick(() => {
123+
if (this[kError]) {
124+
reject(this[kError]);
125+
} else {
126+
resolve(createIterResult(undefined, true));
127+
}
128+
});
131129
});
132130
}
133131

test/parallel/test-stream-readable-async-iterators.js

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -567,23 +567,6 @@ async function tests() {
567567
assert.strictEqual(e, err);
568568
})()]);
569569
}
570-
571-
{
572-
const _err = new Error('asd');
573-
const r = new Readable({
574-
read() {
575-
},
576-
destroy(err, callback) {
577-
setTimeout(() => callback(_err), 1);
578-
}
579-
});
580-
581-
r.destroy();
582-
const it = r[Symbol.asyncIterator]();
583-
it.next().catch(common.mustCall((err) => {
584-
assert.strictEqual(err, _err);
585-
}));
586-
}
587570
}
588571

589572
{

0 commit comments

Comments
 (0)