Summary
ReadableStream signals consumer readiness via pull() / desired size — producer must not flood memory. Handle await writer.ready when piping. Uncontrolled stream read without backpressure OOMs on large responses. Relevant for streaming SSR, file upload, AI token streams.
Code example
async function* readChunks(stream) {
const reader = stream.getReader();
try {
while (true) {
const { done, value } = await reader.read();
if (done) break;
yield value;
}
} finally {
reader.releaseLock();
}
}
Key points
- ReadableStream signals consumer readiness via
pull()/ desired size — producer must not flood memory. - Handle
await writer.readywhen piping. - Uncontrolled stream read without backpressure OOMs on large responses.
- Relevant for streaming SSR, file upload, AI token streams.