Skip to content

Commit 870c942

Browse files
committed
replace with hand-crafted async generator for node v20
1 parent 66c4a33 commit 870c942

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

src/execution/__tests__/mapAsyncIterable-test.ts

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)