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 <jasnell@gmail.com> Reviewed-By: Anatoli Papirovski <apapirovski@mac.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent 39c86bb commit 538582b

2 files changed

Lines changed: 11 additions & 30 deletions

File tree

‎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
returnnewPromise((resolve,reject)=>{
118-
if(this[kError]){
119-
reject(this[kError]);
120-
}elseif(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=newError('asd');
573-
constr=newReadable({
574-
read(){
575-
},
576-
destroy(err,callback){
577-
setTimeout(()=>callback(_err),1);
578-
}
579-
});
580-
581-
r.destroy();
582-
constit=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)