2d0c33a45b
createWriteStream.write() returns false once its internal buffer is full; both reassembly loops ignored that and kept queueing chunks, so the queue grew in memory instead of flushing to disk. Measured over a 1.5 GiB reassembly in 10 MB chunks, this buffered 170 MB versus 10 MB when the drain event is awaited. Also fail loudly on a missing chunk in the v1 loop, matching v2, rather than silently writing a corrupt file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>