From 959c955616118c472654cc6957bb6609d9959f8d Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Wed, 7 Apr 2021 12:51:27 +0200 Subject: [PATCH] feat(read-chunk): handle 0 size --- @vates/read-chunk/index.js | 54 ++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/@vates/read-chunk/index.js b/@vates/read-chunk/index.js index 2bedfe870..f9137b714 100644 --- a/@vates/read-chunk/index.js +++ b/@vates/read-chunk/index.js @@ -1,27 +1,29 @@ exports.readChunk = (stream, size) => - new Promise((resolve, reject) => { - function onEnd() { - resolve(null) - removeListeners() - } - function onError(error) { - reject(error) - removeListeners() - } - function onReadable() { - const data = stream.read(size) - if (data !== null) { - resolve(data) - removeListeners() - } - } - function removeListeners() { - stream.removeListener('end', onEnd) - stream.removeListener('error', onError) - stream.removeListener('readable', onReadable) - } - stream.on('end', onEnd) - stream.on('error', onError) - stream.on('readable', onReadable) - onReadable() - }) + size === 0 + ? Promise.resolve(Buffer.alloc(0)) + : new Promise((resolve, reject) => { + function onEnd() { + resolve(null) + removeListeners() + } + function onError(error) { + reject(error) + removeListeners() + } + function onReadable() { + const data = stream.read(size) + if (data !== null) { + resolve(data) + removeListeners() + } + } + function removeListeners() { + stream.removeListener('end', onEnd) + stream.removeListener('error', onError) + stream.removeListener('readable', onReadable) + } + stream.on('end', onEnd) + stream.on('error', onError) + stream.on('readable', onReadable) + onReadable() + })