diff --git a/package-lock.json b/package-lock.json index 5356d11..53e1e5b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "jetsons", - "version": "1.1.1", + "version": "1.1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c2a9482..e2c2df3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jetsons", - "version": "1.1.1", + "version": "1.1.2", "description": "Stringifies objects as a Readable stream in a JSON.stringify fashion", "main": "src/index.js", "scripts": { diff --git a/src/stackElements.js b/src/stackElements.js index b0f280c..17eb215 100644 --- a/src/stackElements.js +++ b/src/stackElements.js @@ -206,10 +206,16 @@ class StreamStackElement extends StackElement { untilReadable() { let eventListener = null; + let cleanUpReject = () => { }; const promise = new Promise((resolve, reject) => { + cleanUpReject = () => { + if (this._rejections.has(reject)) { + this._rejections.delete(reject) + } + }; eventListener = () => { this._state = states.readable; - this._rejections.delete(reject); + cleanUpReject(); eventListener = null; resolve(); }; @@ -218,6 +224,7 @@ class StreamStackElement extends StackElement { }); const cleanup = () => { + cleanUpReject(); if (eventListener == null) return; this._value.removeListener('readable', eventListener); }; @@ -227,11 +234,16 @@ class StreamStackElement extends StackElement { untilEnd() { let eventListener = null; - + let cleanUpReject = () => { }; const promise = new Promise((resolve, reject) => { + cleanUpReject = () => { + if (this._rejections.has(reject)) { + this._rejections.delete(reject) + } + }; eventListener = () => { this._state = states.ended; - this._rejections.delete(reject); + cleanUpReject(); eventListener = null; resolve(); }; @@ -240,6 +252,7 @@ class StreamStackElement extends StackElement { }); const cleanup = () => { + cleanUpReject(); if (eventListener == null) return; this._value.removeListener('end', eventListener); };