export function readableStream(iterator:AsyncGenerator , abortSignal:AbortSignal) { const abortController = new AbortController() function abort() { abortController.abort(); abortSignal.removeEventListener('abort', abort); } abortSignal.addEventListener('abort', abort); return new ReadableStream({ async start(controller) { for await (const event of iterator) { if (abortController.signal.aborted) { return; } controller.enqueue(event); } }, cancel() { abortController.abort(); } }) }