Skip to content

Commit

Permalink
Better cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
hgranlund committed Mar 26, 2020
1 parent 633ea50 commit 5e346fc
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
19 changes: 16 additions & 3 deletions src/stackElements.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
};
Expand All @@ -218,6 +224,7 @@ class StreamStackElement extends StackElement {
});

const cleanup = () => {
cleanUpReject();
if (eventListener == null) return;
this._value.removeListener('readable', eventListener);
};
Expand All @@ -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();
};
Expand All @@ -240,6 +252,7 @@ class StreamStackElement extends StackElement {
});

const cleanup = () => {
cleanUpReject();
if (eventListener == null) return;
this._value.removeListener('end', eventListener);
};
Expand Down

0 comments on commit 5e346fc

Please sign in to comment.