@@ -73,7 +73,7 @@ class ShareImpl {
7373 #consumers = new SafeSet ( ) ;
7474 #sourceIterator = null ;
7575 #sourceExhausted = false ;
76- #sourceError = null ;
76+ #sourceError;
7777 #cancelled = false ;
7878 #pulling = false ;
7979 #pullWaiters = [ ] ;
@@ -129,7 +129,7 @@ class ShareImpl {
129129 __proto__ : null ,
130130 [ SymbolAsyncIterator ] ( ) {
131131 const getNext = async ( ) => {
132- if ( self . #sourceError) {
132+ if ( self . #sourceError !== undefined ) {
133133 state . detached = true ;
134134 self . #consumers. delete ( state ) ;
135135 throw self . #sourceError;
@@ -141,7 +141,7 @@ class ShareImpl {
141141 // cursor must re-pull rather than terminating prematurely.
142142 for ( ; ; ) {
143143 if ( state . detached ) {
144- if ( self . #sourceError) throw self . #sourceError;
144+ if ( self . #sourceError !== undefined ) throw self . #sourceError;
145145 return { __proto__ : null , done : true , value : undefined } ;
146146 }
147147
@@ -167,7 +167,7 @@ class ShareImpl {
167167 if ( self . #sourceExhausted) {
168168 state . detached = true ;
169169 self . #deleteConsumer( state ) ;
170- if ( self . #sourceError) throw self . #sourceError;
170+ if ( self . #sourceError !== undefined ) throw self . #sourceError;
171171 return { __proto__ : null , done : true , value : undefined } ;
172172 }
173173
@@ -176,7 +176,7 @@ class ShareImpl {
176176 if ( shouldBuffer === null ) {
177177 state . detached = true ;
178178 self . #deleteConsumer( state ) ;
179- if ( self . #sourceError) throw self . #sourceError;
179+ if ( self . #sourceError !== undefined ) throw self . #sourceError;
180180 return { __proto__ : null , done : true , value : undefined } ;
181181 }
182182
@@ -260,7 +260,9 @@ class ShareImpl {
260260
261261 async #waitForBufferSpace( ) {
262262 while ( this . #bufferedBytes >= this . #options. budget ) {
263- if ( this . #cancelled || this . #sourceError || this . #sourceExhausted) {
263+ if ( this . #cancelled ||
264+ this . #sourceError !== undefined ||
265+ this . #sourceExhausted) {
264266 return this . #cancelled ? null : true ;
265267 }
266268
@@ -418,7 +420,7 @@ class SyncShareImpl {
418420 #consumers = new SafeSet ( ) ;
419421 #sourceIterator = null ;
420422 #sourceExhausted = false ;
421- #sourceError = null ;
423+ #sourceError;
422424 #cancelled = false ;
423425 #cachedMinCursor = 0 ;
424426 #cachedMinCursorConsumers = 0 ;
@@ -467,14 +469,14 @@ class SyncShareImpl {
467469 return {
468470 __proto__ : null ,
469471 next ( ) {
470- if ( state . detached ) {
471- return { __proto__ : null , done : true , value : undefined } ;
472- }
473- if ( self . #sourceError) {
472+ if ( self . #sourceError !== undefined ) {
474473 state . detached = true ;
475474 self . #deleteConsumer( state ) ;
476475 throw self . #sourceError;
477476 }
477+ if ( state . detached ) {
478+ return { __proto__ : null , done : true , value : undefined } ;
479+ }
478480 if ( self . #cancelled) {
479481 state . detached = true ;
480482 self . #deleteConsumer( state ) ;
@@ -535,7 +537,7 @@ class SyncShareImpl {
535537
536538 self . #pullFromSource( ) ;
537539
538- if ( self . #sourceError) {
540+ if ( self . #sourceError !== undefined ) {
539541 state . detached = true ;
540542 self . #deleteConsumer( state ) ;
541543 throw self . #sourceError;
0 commit comments