Object.defineProperty(ReadableStream.prototype, Symbol.asyncIterator, { configurable: true, writable: true, value: async function* ( this: ReadableStream, { preventCancel = false }: { preventCancel?: boolean } = {}, ) { const reader = this.getReader(); let done = false; try { while (true) { const result = await reader.read(); done = result.done; if (done) return; yield result.value; } } finally { try { if (!done && !preventCancel) await reader.cancel(); } finally { reader.releaseLock(); } } }, });