UNPKG

647 BJavaScriptView Raw
1"use strict";
2
3// drain a stream, return the contents as a buffer
4
5function drain(stream) {
6
7 if(stream.then)
8 return stream.then(drain);
9
10 return new Promise(function(resolve, reject) {
11
12 var body = [];
13
14 //if stream as already been drained (or is closed), returns a void buffer
15 var state = stream._readableState;
16 if(state && state.ended && !state.length)
17 resolve(Buffer.concat(body));
18
19 stream.on('error', reject);
20
21 stream.on('data', function(buf) {
22 body.push(buf);
23 });
24
25 stream.on('end', function() {
26 resolve(Buffer.concat(body));
27 });
28
29 return stream;
30 });
31}
32
33
34module.exports = drain;