From 8716539eebc02b6a928e7c1eb9e4bb1bb5a1026a Mon Sep 17 00:00:00 2001 From: John Hiesey Date: Mon, 24 Sep 2018 15:18:50 -0700 Subject: [PATCH] Fix errors in IE11 * Polyfill Number.isNaN * Don't create Symbol.asyncIterator if Symbol is not defined Fixes #364 --- lib/_stream_readable.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/_stream_readable.js b/lib/_stream_readable.js index 652fbcd5b4..340870c3a6 100644 --- a/lib/_stream_readable.js +++ b/lib/_stream_readable.js @@ -354,7 +354,8 @@ function computeNewHighWaterMark(n) { function howMuchToRead(n, state) { if (n <= 0 || state.length === 0 && state.ended) return 0; if (state.objectMode) return 1; - if (Number.isNaN(n)) { + // Equivalent to Number.isNaN() but works in IE11 + if (n !== n) { // Only flow one buffer at a time if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; } @@ -941,11 +942,14 @@ Readable.prototype.wrap = function (stream) { return this; }; -Readable.prototype[Symbol.asyncIterator] = function () { - emitExperimentalWarning('Readable[Symbol.asyncIterator]'); - if (ReadableAsyncIterator === undefined) ReadableAsyncIterator = require('./internal/streams/async_iterator'); - return new ReadableAsyncIterator(this); -}; +// Only add asyncIterator if Symbol is available +if (typeof Symbol === 'function') { + Readable.prototype[Symbol.asyncIterator] = function () { + emitExperimentalWarning('Readable[Symbol.asyncIterator]'); + if (ReadableAsyncIterator === undefined) ReadableAsyncIterator = require('./internal/streams/async_iterator'); + return new ReadableAsyncIterator(this); + }; +} Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { // making it explicit this property is not enumerable