export type AsyncIterableStream = AsyncIterable & ReadableStream; export function createAsyncIterableStream( source: ReadableStream, transformer: Transformer, ): AsyncIterableStream { const transformedStream: any = source.pipeThrough( new TransformStream(transformer), ); transformedStream[Symbol.asyncIterator] = () => { const reader = transformedStream.getReader(); return { async next(): Promise> { const { done, value } = await reader.read(); return done ? { done: true, value: undefined } : { done: false, value }; }, }; }; return transformedStream; }