File tree Expand file tree Collapse file tree 3 files changed +28
-13
lines changed Expand file tree Collapse file tree 3 files changed +28
-13
lines changed Original file line number Diff line number Diff line change @@ -327,17 +327,22 @@ export function __disposeResources(env) {
327
327
env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
328
328
env . hasError = true ;
329
329
}
330
+ var r , s = 0 ;
330
331
function next ( ) {
331
- while ( env . stack . length ) {
332
- var rec = env . stack . pop ( ) ;
332
+ while ( r = env . stack . pop ( ) ) {
333
333
try {
334
- var result = rec . dispose && rec . dispose . call ( rec . value ) ;
335
- if ( rec . async ) return Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
334
+ if ( ! r . async && s === 1 ) return s = 0 , env . stack . push ( r ) , Promise . resolve ( ) . then ( next ) ;
335
+ if ( r . dispose ) {
336
+ var result = r . dispose . call ( r . value ) ;
337
+ if ( r . async ) return s |= 2 , Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
338
+ }
339
+ else s |= 1 ;
336
340
}
337
341
catch ( e ) {
338
342
fail ( e ) ;
339
343
}
340
344
}
345
+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
341
346
if ( env . hasError ) throw env . error ;
342
347
}
343
348
return next ( ) ;
Original file line number Diff line number Diff line change @@ -326,17 +326,22 @@ export function __disposeResources(env) {
326
326
env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
327
327
env . hasError = true ;
328
328
}
329
+ var r , s = 0 ;
329
330
function next ( ) {
330
- while ( env . stack . length ) {
331
- var rec = env . stack . pop ( ) ;
331
+ while ( r = env . stack . pop ( ) ) {
332
332
try {
333
- var result = rec . dispose && rec . dispose . call ( rec . value ) ;
334
- if ( rec . async ) return Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
333
+ if ( ! r . async && s === 1 ) return s = 0 , env . stack . push ( r ) , Promise . resolve ( ) . then ( next ) ;
334
+ if ( r . dispose ) {
335
+ var result = r . dispose . call ( r . value ) ;
336
+ if ( r . async ) return s |= 2 , Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
337
+ }
338
+ else s |= 1 ;
335
339
}
336
340
catch ( e ) {
337
- fail ( e ) ;
341
+ fail ( e ) ;
338
342
}
339
343
}
344
+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
340
345
if ( env . hasError ) throw env . error ;
341
346
}
342
347
return next ( ) ;
Original file line number Diff line number Diff line change @@ -374,17 +374,22 @@ var __disposeResources;
374
374
env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
375
375
env . hasError = true ;
376
376
}
377
+ var r , s = 0 ;
377
378
function next ( ) {
378
- while ( env . stack . length ) {
379
- var rec = env . stack . pop ( ) ;
379
+ while ( r = env . stack . pop ( ) ) {
380
380
try {
381
- var result = rec . dispose && rec . dispose . call ( rec . value ) ;
382
- if ( rec . async ) return Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
381
+ if ( ! r . async && s === 1 ) return s = 0 , env . stack . push ( r ) , Promise . resolve ( ) . then ( next ) ;
382
+ if ( r . dispose ) {
383
+ var result = r . dispose . call ( r . value ) ;
384
+ if ( r . async ) return s |= 2 , Promise . resolve ( result ) . then ( next , function ( e ) { fail ( e ) ; return next ( ) ; } ) ;
385
+ }
386
+ else s |= 1 ;
383
387
}
384
388
catch ( e ) {
385
389
fail ( e ) ;
386
390
}
387
391
}
392
+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
388
393
if ( env . hasError ) throw env . error ;
389
394
}
390
395
return next ( ) ;
You can’t perform that action at this time.
0 commit comments