@@ -360,20 +360,37 @@ describe('mapAsyncIterable', () => {
360360 ) ;
361361 } ) ;
362362
363- it ( 'disposes of async iterable ' , async ( ) => {
363+ it ( 'disposes of async generator ' , async ( ) => {
364364 let returned = false ;
365- async function * source ( ) {
366- try {
367- yield 1 ;
368- yield 2 ;
369- yield 3 ;
370- } finally {
365+
366+ const items = [ 1 , 2 , 3 ] ;
367+ const generator : AsyncGenerator < number , void , void > = {
368+ [ Symbol . asyncIterator ] ( ) {
369+ return this ;
370+ } ,
371+ next ( ) : Promise < IteratorResult < number , void > > {
372+ const value = items . shift ( ) ;
373+ if ( value !== undefined ) {
374+ return Promise . resolve ( { done : false , value } ) ;
375+ }
376+
377+ return Promise . resolve ( { done : true , value : undefined } ) ;
378+ } ,
379+ return ( ) : Promise < IteratorResult < number , void > > {
371380 returned = true ;
372- }
373- }
381+ return Promise . resolve ( { done : true , value : undefined } ) ;
382+ } ,
383+ throw ( ) : Promise < IteratorResult < number , void > > {
384+ returned = true ;
385+ return Promise . reject ( new Error ( ) ) ;
386+ } ,
387+ async [ Symbol . asyncDispose ] ( ) {
388+ await this . return ( ) ;
389+ } ,
390+ } ;
374391
375392 {
376- await using doubles = mapAsyncIterable ( source ( ) , ( x ) => x + x ) ;
393+ await using doubles = mapAsyncIterable ( generator , ( x ) => x + x ) ;
377394
378395 expect ( await doubles . next ( ) ) . to . deep . equal ( { value : 2 , done : false } ) ;
379396 expect ( await doubles . next ( ) ) . to . deep . equal ( { value : 4 , done : false } ) ;
0 commit comments