This is where bad things happens - if chunk contains only part of unicode character then implicit Buffer.toString() produces corrupted string.
The fix will be to keep an array of chunks and then invoking Buffer.concat(chunks).toString() at the end.
Simple repro with hotfix