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) {
327327 env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
328328 env . hasError = true ;
329329 }
330+ var r , s = 0 ;
330331 function next ( ) {
331- while ( env . stack . length ) {
332- var rec = env . stack . pop ( ) ;
332+ while ( r = env . stack . pop ( ) ) {
333333 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 ;
336340 }
337341 catch ( e ) {
338342 fail ( e ) ;
339343 }
340344 }
345+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
341346 if ( env . hasError ) throw env . error ;
342347 }
343348 return next ( ) ;
Original file line number Diff line number Diff line change @@ -326,17 +326,22 @@ export function __disposeResources(env) {
326326 env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
327327 env . hasError = true ;
328328 }
329+ var r , s = 0 ;
329330 function next ( ) {
330- while ( env . stack . length ) {
331- var rec = env . stack . pop ( ) ;
331+ while ( r = env . stack . pop ( ) ) {
332332 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 ;
335339 }
336340 catch ( e ) {
337- fail ( e ) ;
341+ fail ( e ) ;
338342 }
339343 }
344+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
340345 if ( env . hasError ) throw env . error ;
341346 }
342347 return next ( ) ;
Original file line number Diff line number Diff line change @@ -374,17 +374,22 @@ var __disposeResources;
374374 env . error = env . hasError ? new _SuppressedError ( e , env . error , "An error was suppressed during disposal." ) : e ;
375375 env . hasError = true ;
376376 }
377+ var r , s = 0 ;
377378 function next ( ) {
378- while ( env . stack . length ) {
379- var rec = env . stack . pop ( ) ;
379+ while ( r = env . stack . pop ( ) ) {
380380 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 ;
383387 }
384388 catch ( e ) {
385389 fail ( e ) ;
386390 }
387391 }
392+ if ( s === 1 ) return env . hasError ? Promise . reject ( env . error ) : Promise . resolve ( ) ;
388393 if ( env . hasError ) throw env . error ;
389394 }
390395 return next ( ) ;
You can’t perform that action at this time.
0 commit comments