Dev.Lib
arrow_backBack to Blogs
LEVEL_055.5June 27, 20261 min read

Backpressure in Streams API

Caching & Networking

ReadableStream signals consumer readiness via `pull()` / desired size — producer must not flood memory.

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.ready when piping.
  • Uncontrolled stream read without backpressure OOMs on large responses.
  • Relevant for streaming SSR, file upload, AI token streams.

Further reading

Related concepts