Skip to content

Commit 4b04bf8

Browse files
ronagMylesBorins
authored andcommitted
stream: re-use legacy destroyer
Backport-PR-URL: #32174 PR-URL: #31316 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
1 parent 7ce1cc9 commit 4b04bf8

3 files changed

Lines changed: 19 additions & 21 deletions

File tree

‎lib/internal/streams/async_iterator.js‎

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const {
1111
}=primordials;
1212

1313
constfinished=require('internal/streams/end-of-stream');
14+
constdestroyImpl=require('internal/streams/destroy');
1415

1516
constkLastResolve=Symbol('lastResolve');
1617
constkLastReject=Symbol('lastReject');
@@ -22,15 +23,6 @@ const kStream = Symbol('stream');
2223

2324
letReadable;
2425

25-
functiondestroy(stream,err){
26-
// request.destroy just do .end - .abort is what we want
27-
if(typeofstream.abort==='function')returnstream.abort();
28-
if(stream.req&&
29-
typeofstream.req.abort==='function')returnstream.req.abort();
30-
if(typeofstream.destroy==='function')returnstream.destroy(err);
31-
if(typeofstream.close==='function')returnstream.close();
32-
}
33-
3426
functioncreateIterResult(value,done){
3527
return{ value, done };
3628
}
@@ -92,7 +84,7 @@ function finish(self, err) {
9284
resolve(createIterResult(undefined,true));
9385
}
9486
});
95-
destroy(stream,err);
87+
destroyImpl.destroyer(stream,err);
9688
});
9789
}
9890

@@ -172,7 +164,7 @@ const createReadableStreamAsyncIterator = (stream) => {
172164

173165
constsrc=stream;
174166
stream=newReadable({objectMode: true}).wrap(src);
175-
finished(stream,(err)=>destroy(src,err));
167+
finished(stream,(err)=>destroyImpl.destroyer(src,err));
176168
}
177169

178170
constiterator=ObjectCreate(ReadableStreamAsyncIteratorPrototype,{

‎lib/internal/streams/destroy.js‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,21 @@ function errorOrDestroy(stream, err) {
128128
stream.emit('error',err);
129129
}
130130

131+
functionisRequest(stream){
132+
returnstream&&stream.setHeader&&typeofstream.abort==='function';
133+
}
134+
135+
// Normalize destroy for legacy.
136+
functiondestroyer(stream,err){
137+
// request.destroy just do .end - .abort is what we want
138+
if(isRequest(stream))returnstream.abort();
139+
if(isRequest(stream.req))returnstream.req.abort();
140+
if(typeofstream.destroy==='function')returnstream.destroy(err);
141+
if(typeofstream.close==='function')returnstream.close();
142+
}
131143

132144
module.exports={
145+
destroyer,
133146
destroy,
134147
undestroy,
135148
errorOrDestroy

‎lib/internal/streams/pipeline.js‎

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const {
1212
leteos;
1313

1414
const{ once }=require('internal/util');
15+
constdestroyImpl=require('internal/streams/destroy');
1516
const{
1617
ERR_INVALID_ARG_TYPE,
1718
ERR_INVALID_RETURN_VALUE,
@@ -28,14 +29,6 @@ function isRequest(stream) {
2829
returnstream&&stream.setHeader&&typeofstream.abort==='function';
2930
}
3031

31-
functiondestroyStream(stream,err){
32-
// request.destroy just do .end - .abort is what we want
33-
if(isRequest(stream))returnstream.abort();
34-
if(isRequest(stream.req))returnstream.req.abort();
35-
if(typeofstream.destroy==='function')returnstream.destroy(err);
36-
if(typeofstream.close==='function')returnstream.close();
37-
}
38-
3932
functiondestroyer(stream,reading,writing,final,callback){
4033
callback=once(callback);
4134
letdestroyed=false;
@@ -46,15 +39,15 @@ function destroyer(stream, reading, writing, final, callback) {
4639
destroyed=true;
4740
constreadable=stream.readable||isRequest(stream);
4841
if(err||!final||!readable){
49-
destroyStream(stream,err);
42+
destroyImpl.destroyer(stream,err);
5043
}
5144
callback(err);
5245
});
5346

5447
return(err)=>{
5548
if(destroyed)return;
5649
destroyed=true;
57-
destroyStream(stream,err);
50+
destroyImpl.destroyer(stream,err);
5851
callback(err||newERR_STREAM_DESTROYED('pipe'));
5952
};
6053
}

0 commit comments

Comments
 (0)