@@ -802,6 +802,7 @@ async function* createAsyncPipeline(source, transforms, signal) {
802802 * @returns {Iterable<Uint8Array[]> }
803803 */
804804function pullSync ( source , ...transforms ) {
805+ const normalized = fromSync ( source ) ;
805806 for ( let i = 0 ; i < transforms . length ; i ++ ) {
806807 if ( ! isTransform ( transforms [ i ] ) ) {
807808 throw new ERR_INVALID_ARG_TYPE (
@@ -812,7 +813,7 @@ function pullSync(source, ...transforms) {
812813 return {
813814 __proto__ : null ,
814815 * [ SymbolIterator ] ( ) {
815- yield * createSyncPipeline ( fromSync ( source ) , transforms ) ;
816+ yield * createSyncPipeline ( normalized , transforms ) ;
816817 } ,
817818 } ;
818819}
@@ -829,17 +830,9 @@ function pull(source, ...args) {
829830 const signal = options ?. signal ;
830831 if ( signal !== undefined ) {
831832 validateAbortSignal ( signal , 'options.signal' ) ;
832- // Eagerly check abort at call time per spec
833- if ( signal . aborted ) {
834- return {
835- __proto__ : null ,
836- // eslint-disable-next-line require-yield
837- async * [ SymbolAsyncIterator ] ( ) {
838- throw signal . reason ;
839- } ,
840- } ;
841- }
842833 }
834+ const normalized = from ( source ) ;
835+ signal ?. throwIfAborted ( ) ;
843836
844837 return {
845838 __proto__ : null ,
@@ -849,7 +842,7 @@ function pull(source, ...args) {
849842 controller . signal : AbortSignal . any ( [ signal , controller . signal ] ) ;
850843
851844 async function * pipeline ( ) {
852- yield * createAsyncPipeline ( from ( source ) , transforms , iteratorSignal ) ;
845+ yield * createAsyncPipeline ( normalized , transforms , iteratorSignal ) ;
853846 }
854847 const iterator = pipeline ( ) ;
855848
@@ -884,9 +877,6 @@ function pullWithConsumerCleanup(source, transforms, signal) {
884877 return sourceIterator ;
885878 } ,
886879 } ;
887- const pipeline = signal === undefined ?
888- pull ( pipelineSource , ...transforms ) :
889- pull ( pipelineSource , ...transforms , { __proto__ : null , signal } ) ;
890880 let sourceClosed = false ;
891881 let abortHandler ;
892882
@@ -903,6 +893,21 @@ function pullWithConsumerCleanup(source, transforms, signal) {
903893 }
904894 }
905895
896+ if ( signal ?. aborted ) {
897+ closeSource ( 'throw' , signal . reason ) ;
898+ return {
899+ __proto__ : null ,
900+ // eslint-disable-next-line require-yield
901+ async * [ SymbolAsyncIterator ] ( ) {
902+ throw signal . reason ;
903+ } ,
904+ } ;
905+ }
906+
907+ const pipeline = signal === undefined ?
908+ pull ( pipelineSource , ...transforms ) :
909+ pull ( pipelineSource , ...transforms , { __proto__ : null , signal } ) ;
910+
906911 if ( signal !== undefined ) {
907912 abortHandler = ( ) => closeSource ( 'throw' , signal . reason ) ;
908913 signal . addEventListener ( 'abort' , abortHandler ,
0 commit comments