Streams e backpressure
Pergunta
Por que ler um arquivo de 2 GB com `fs.readFile` e mandar na resposta é um problema, e como streams com backpressure resolvem?
Resposta esperada
`fs.readFile` carrega o arquivo inteiro na memória antes de qualquer coisa — 2 GB por requisição, e com algumas requisições concorrentes o processo estoura (OOM). Streams processam em pedaços (chunks): `fs.createReadStream(path).pipe(res)` lê um bloco, envia, lê o próximo — memória constante independente do tamanho do arquivo. Backpressure é o mecanismo que impede o lado rápido (o disco) de afogar o lado lento (a rede/cliente): quando o buffer do destino enche, `pipe` pausa a leitura da origem e só retoma quando o destino drena (`drain`). Fazer isso na mão sem respeitar o retorno de `write()` e o evento `drain` recria o problema de memória. `pipeline()` (com callback/promise) é o jeito recomendado porque também propaga erro e faz cleanup dos streams.
Por que perguntam isso
Pergunta pleno/sênior de Node. Termos que indicam domínio: 'backpressure', o evento `drain`, e `pipeline()` sobre `pipe()`.