@@ -281,7 +281,7 @@ function tracingChannelFrom(nameOrChannels, name) {
281281}
282282
283283class TracingChannel {
284- #generatorChannel
284+ #nextChannel
285285
286286 constructor ( nameOrChannels ) {
287287 for ( let i = 0 ; i < traceEvents . length ; ++ i ) {
@@ -436,10 +436,10 @@ class TracingChannel {
436436 return ReflectApply ( fn , thisArg , args ) ;
437437 }
438438
439- const { channel , start, end, asyncStart, asyncEnd, error } = this ;
439+ const { start, end, asyncStart, asyncEnd, error } = this ;
440440
441441 if ( ! this . #nextChannel) {
442- this . #nextChannel = this . tracingChannel ( {
442+ this . #nextChannel = tracingChannel ( {
443443 start : channel ( start . name . slice ( 0 , - 6 ) + ':next:start' ) ,
444444 end : channel ( end . name . slice ( 0 , - 4 ) + ':next:end' ) ,
445445 asyncStart : channel ( asyncStart . name . slice ( 0 , - 11 ) + ':next:asyncStart' ) ,
@@ -448,22 +448,26 @@ class TracingChannel {
448448 } ) ;
449449 }
450450
451- const iter = this . #traceMaybePromise( fn , context , thisArg , ...args ) ;
451+ const nextChannel = this . #nextChannel;
452+
453+ const wrapIter = ( iter ) => {
454+ const { next : iterNext , return : iterReturn , throw : iterThrow } = iter ;
452455
453- return iter instanceof Promise
454- ? iter . then ( ( iter , method ) => {
455- const { next : iterNext , return : iterReturn , throw : iterThrow } = iter ;
456+ iter . next = ( ...args ) =>
457+ nextChannel . #traceMaybePromise( iterNext , context , iter , ...args ) ;
458+ iter . return = ( ...args ) =>
459+ nextChannel . #traceMaybePromise( iterReturn , context , iter , ...args ) ;
460+ iter . throw = ( ...args ) =>
461+ nextChannel . #traceMaybePromise( iterThrow , context , iter , ...args ) ;
462+
463+ return iter ;
464+ } ;
456465
457- iter . next = ( ...args ) =>
458- this . #nextChannel. #traceMaybePromise( iterNext , ctx , iter , ...args ) ;
459- iter . return = ( ...args ) =>
460- this . #nextChannel. #traceMaybePromise( iterReturn , ctx , iter , ...args ) ;
461- iter . throw = ( ...args ) =>
462- this . #nextChannel. #traceMaybePromise( iterThrow , ctx , iter , ...args ) ;
466+ const result = this . #traceMaybePromise( fn , context , thisArg , ...args ) ;
463467
464- return iter ;
465- } )
466- : iter ;
468+ return result instanceof Promise
469+ ? PromisePrototypeThen ( result , wrapIter )
470+ : wrapIter ( result ) ;
467471 }
468472
469473 #traceMaybePromise( fn , context = { } , thisArg , ...args ) {
0 commit comments