Yay, fixed issue with hanging! Apparently it was caused by pushing too much data into Writable stream. uWS returns about 512 KB chunks, while Writable disk stream can only handle at most 128 KB (and by default Express sends 64 KB). After I made it save data in buffer and only send 64 KB chunks instead it works! No more hanging and empty files.