diff --git a/src/index.ts b/src/index.ts index def98a8..34729b2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -99,7 +99,7 @@ class StreamSub implements Subscription { constructor(private _stream: Stream, private _listener: InternalListener) { } unsubscribe(): void { - this._stream._remove(this._listener); + this._stream._remove(this._listener, true); } } @@ -1151,7 +1151,7 @@ export class Stream implements InternalListener { } } - _remove(il: InternalListener): void { + _remove(il: InternalListener, async: boolean = false): void { const ta = this._target; if (ta) return ta._remove(il); const a = this._ils; @@ -1160,7 +1160,11 @@ export class Stream implements InternalListener { a.splice(i, 1); if (this._prod !== NO && a.length <= 0) { this._err = NO; - this._stopID = setTimeout(() => this._stopNow()); + if (async) { + this._stopID = setTimeout(() => this._stopNow()); + } else { + this._stopNow(); + } } else if (a.length === 1) { this._pruneCycles(); } @@ -1216,7 +1220,7 @@ export class Stream implements InternalListener { * @param {Listener} listener */ removeListener(listener: Partial>): void { - this._remove(listener as InternalListener); + this._remove(listener as InternalListener, true); } /**