UNPKG

957 BJavaScriptView Raw
1"use strict";
2
3// read once in a stream, return the contents as a buffer
4
5function read(stream) {
6
7 if(stream.then)
8 return stream.then(read);
9
10 return new Promise(function(resolve, reject) {
11
12 //if stream as already been drained (or is closed), returns a void buffer
13 var state = stream._readableState;
14 if(state && state.ended && !state.length)
15 resolve(null);
16
17 if(stream.isPaused())
18 resolve(stream.read());
19
20
21 let onData = function (result) { cleanup(); resolve(result); };
22 let onEnd = function () { cleanup(); resolve(null); };
23 let onError = function (err) { cleanup(); reject(err); };
24
25 stream.once('data', onData);
26 stream.once('end', onEnd);
27 stream.once('error', onError);
28
29 let cleanup = function() {
30 stream.removeListener('data', onData);
31 stream.removeListener('error', onError);
32 stream.removeListener('end', onEnd);
33 };
34
35 return stream;
36 });
37}
38
39
40module.exports = read;