aboutsummaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/readable-stream/lib/internal
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/readable-stream/lib/internal')
-rw-r--r--deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js17
-rw-r--r--deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js43
2 files changed, 38 insertions, 22 deletions
diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js
index 79a6e1e11e..9fb615a2f3 100644
--- a/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js
+++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/async_iterator.js
@@ -47,6 +47,11 @@ function onReadable(iter) {
function wrapForNext(lastPromise, iter) {
return function (resolve, reject) {
lastPromise.then(function () {
+ if (iter[kEnded]) {
+ resolve(createIterResult(undefined, true));
+ return;
+ }
+
iter[kHandlePromise](resolve, reject);
}, reject);
};
@@ -70,7 +75,7 @@ var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPro
}
if (this[kEnded]) {
- return Promise.resolve(createIterResult(null, true));
+ return Promise.resolve(createIterResult(undefined, true));
}
if (this[kStream].destroyed) {
@@ -83,7 +88,7 @@ var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPro
if (_this[kError]) {
reject(_this[kError]);
} else {
- resolve(createIterResult(null, true));
+ resolve(createIterResult(undefined, true));
}
});
});
@@ -128,7 +133,7 @@ var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPro
return;
}
- resolve(createIterResult(null, true));
+ resolve(createIterResult(undefined, true));
});
});
}), _Object$setPrototypeO), AsyncIteratorPrototype);
@@ -151,9 +156,6 @@ var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterat
}), _defineProperty(_Object$create, kEnded, {
value: stream._readableState.endEmitted,
writable: true
- }), _defineProperty(_Object$create, kLastPromise, {
- value: null,
- writable: true
}), _defineProperty(_Object$create, kHandlePromise, {
value: function value(resolve, reject) {
var data = iterator[kStream].read();
@@ -170,6 +172,7 @@ var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterat
},
writable: true
}), _Object$create));
+ iterator[kLastPromise] = null;
finished(stream, function (err) {
if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise
@@ -192,7 +195,7 @@ var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterat
iterator[kLastPromise] = null;
iterator[kLastResolve] = null;
iterator[kLastReject] = null;
- resolve(createIterResult(null, true));
+ resolve(createIterResult(undefined, true));
}
iterator[kEnded] = true;
diff --git a/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
index cf23d53b5a..831f286d98 100644
--- a/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
+++ b/deps/npm/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
@@ -4,27 +4,30 @@
var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;
-function noop() {}
-
-function isRequest(stream) {
- return stream.setHeader && typeof stream.abort === 'function';
-}
-
function once(callback) {
var called = false;
- return function (err) {
+ return function () {
if (called) return;
called = true;
- callback.call(this, err);
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ callback.apply(this, args);
};
}
+function noop() {}
+
+function isRequest(stream) {
+ return stream.setHeader && typeof stream.abort === 'function';
+}
+
function eos(stream, opts, callback) {
if (typeof opts === 'function') return eos(stream, null, opts);
if (!opts) opts = {};
callback = once(callback || noop);
- var ws = stream._writableState;
- var rs = stream._readableState;
var readable = opts.readable || opts.readable !== false && stream.readable;
var writable = opts.writable || opts.writable !== false && stream.writable;
@@ -32,13 +35,19 @@ function eos(stream, opts, callback) {
if (!stream.writable) onfinish();
};
+ var writableEnded = stream._writableState && stream._writableState.finished;
+
var onfinish = function onfinish() {
writable = false;
+ writableEnded = true;
if (!readable) callback.call(stream);
};
+ var readableEnded = stream._readableState && stream._readableState.endEmitted;
+
var onend = function onend() {
readable = false;
+ readableEnded = true;
if (!writable) callback.call(stream);
};
@@ -47,12 +56,16 @@ function eos(stream, opts, callback) {
};
var onclose = function onclose() {
- if (readable && !(rs && rs.ended)) {
- return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE());
+ var err;
+
+ if (readable && !readableEnded) {
+ if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
+ return callback.call(stream, err);
}
- if (writable && !(ws && ws.ended)) {
- return callback.call(stream, new ERR_STREAM_PREMATURE_CLOSE());
+ if (writable && !writableEnded) {
+ if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
+ return callback.call(stream, err);
}
};
@@ -64,7 +77,7 @@ function eos(stream, opts, callback) {
stream.on('complete', onfinish);
stream.on('abort', onclose);
if (stream.req) onrequest();else stream.on('request', onrequest);
- } else if (writable && !ws) {
+ } else if (writable && !stream._writableState) {
// legacy streams
stream.on('end', onlegacyfinish);
stream.on('close', onlegacyfinish);