11'use strict' ;
22
3- const { AbortController } = require ( 'internal/abort_controller' ) ;
3+ const { AbortController, AbortSignal } = require ( 'internal/abort_controller' ) ;
44
55const {
66 codes : {
@@ -16,7 +16,7 @@ const {
1616 validateInteger,
1717 validateObject,
1818} = require ( 'internal/validators' ) ;
19- const { kWeakHandler } = require ( 'internal/event_target' ) ;
19+ const { kWeakHandler, kResistStopPropagation } = require ( 'internal/event_target' ) ;
2020const { finished } = require ( 'internal/streams/end-of-stream' ) ;
2121const staticCompose = require ( 'internal/streams/compose' ) ;
2222const {
@@ -26,6 +26,7 @@ const { isWritable, isNodeStream } = require('internal/streams/utils');
2626
2727const {
2828 ArrayPrototypePush,
29+ Boolean,
2930 MathFloor,
3031 Number,
3132 NumberIsNaN,
@@ -83,19 +84,11 @@ function map(fn, options) {
8384 validateInteger ( concurrency , 'concurrency' , 1 ) ;
8485
8586 return async function * map ( ) {
86- const ac = new AbortController ( ) ;
87+ const signal = AbortSignal . any ( [ options ?. signal ] . filter ( Boolean ) ) ;
8788 const stream = this ;
8889 const queue = [ ] ;
89- const signal = ac . signal ;
9090 const signalOpt = { signal } ;
9191
92- const abort = ( ) => ac . abort ( ) ;
93- if ( options ?. signal ?. aborted ) {
94- abort ( ) ;
95- }
96-
97- options ?. signal ?. addEventListener ( 'abort' , abort ) ;
98-
9992 let next ;
10093 let resume ;
10194 let done = false ;
@@ -152,7 +145,6 @@ function map(fn, options) {
152145 next ( ) ;
153146 next = null ;
154147 }
155- options ?. signal ?. removeEventListener ( 'abort' , abort ) ;
156148 }
157149 }
158150
@@ -187,8 +179,6 @@ function map(fn, options) {
187179 } ) ;
188180 }
189181 } finally {
190- ac . abort ( ) ;
191-
192182 done = true ;
193183 if ( resume ) {
194184 resume ( ) ;
@@ -281,7 +271,7 @@ async function reduce(reducer, initialValue, options) {
281271 const ac = new AbortController ( ) ;
282272 const signal = ac . signal ;
283273 if ( options ?. signal ) {
284- const opts = { once : true , [ kWeakHandler ] : this } ;
274+ const opts = { once : true , [ kWeakHandler ] : this , [ kResistStopPropagation ] : true } ;
285275 options . signal . addEventListener ( 'abort' , ( ) => ac . abort ( ) , opts ) ;
286276 }
287277 let gotAnyItemFromStream = false ;
0 commit comments