28 lines
681 B
JavaScript
28 lines
681 B
JavaScript
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()
|
|
})
|