@@ -1806,12 +1806,14 @@ test('owner release aborts its unlocked winner read after a reset compensation m
18061806 await Promise . race ( [ operation , new Promise ( ( _ , rejectPromise ) => { timer = setTimeout ( ( ) => rejectPromise ( new Error ( `owner release cleanup timed out: ${ describeResidual ( ) } ` ) ) , scaleTestTimeout ( 500 ) ) ; } ) ] ) ;
18071807 } finally { clearTimeout ( timer ) ; }
18081808 } ;
1809+ try { await waitForCleanup ( releaseOutcome ?? Promise . resolve ( ) , ( ) => `caller residual=${ releaseOutcome ? ( releaseOutcomeSettled ? 'settled' : 'pending' ) : 'not-started' } ` ) ; } catch ( error ) { cleanupErrors . push ( error ) ; }
18091810 try {
1810- try { await waitForCleanup ( releaseOutcome ?? Promise . resolve ( ) , ( ) => `caller residual=${ releaseOutcome ? ( releaseOutcomeSettled ? 'settled' : 'pending' ) : 'not-started' } ` ) ; } catch ( error ) { cleanupErrors . push ( error ) ; }
18111811 for ( let turn = 0 ; turn < 100 && broker . releaseTasks . size ; turn += 1 ) await new Promise ( ( resolvePromise ) => setImmediate ( resolvePromise ) ) ;
1812- try { await waitForCleanup ( Promise . allSettled ( [ ...broker . releaseTasks ] ) , ( ) => `task residual=${ broker . releaseTasks . size } ` ) ; } catch ( error ) { cleanupErrors . push ( error ) ; }
1813- if ( cleanupErrors . length ) throw new AggregateError ( cleanupErrors , `owner release cleanup failed: caller residual=${ releaseOutcome ? ( releaseOutcomeSettled ? 'settled' : 'pending' ) : 'not-started' } ; task residual=${ broker . releaseTasks . size } ` ) ;
1814- } finally { await rm ( directory , { recursive : true , force : true } ) ; }
1812+ await waitForCleanup ( Promise . allSettled ( [ ...broker . releaseTasks ] ) , ( ) => `task residual=${ broker . releaseTasks . size } ` ) ;
1813+ } catch ( error ) { cleanupErrors . push ( error ) ; }
1814+ try { await rm ( directory , { recursive : true , force : true } ) ; } catch ( error ) { cleanupErrors . push ( error ) ; }
1815+ if ( cleanupErrors . length === 1 ) throw cleanupErrors [ 0 ] ;
1816+ if ( cleanupErrors . length > 1 ) throw new AggregateError ( cleanupErrors , `owner release cleanup failed: caller residual=${ releaseOutcome ? ( releaseOutcomeSettled ? 'settled' : 'pending' ) : 'not-started' } ; task residual=${ broker . releaseTasks . size } ` ) ;
18151817 } ) ;
18161818 const releasing = broker . releaseOwner ( socket , ownerId , [ ] , Date . now ( ) + scaleTestTimeout ( 1_000 ) ) ; releaseOutcome = releasing . then ( ( value ) => ( { kind : 'fulfilled' , value } ) , ( error ) => ( { kind : 'rejected' , error } ) ) ; void releaseOutcome . then ( ( ) => { releaseOutcomeSettled = true ; } ) ;
18171819 const boundary = await Promise . race ( [ secondWriteEntered . then ( ( ) => 'second-write' ) , releaseOutcome . then ( ( ) => 'release-settled' ) ] ) ; assert . equal ( boundary , 'second-write' ) ; assert . equal ( writes , 2 ) ;
0 commit comments