diff --git a/src/Subscriber.ts b/src/Subscriber.ts index 808ad6f7c2..68a50d8add 100644 --- a/src/Subscriber.ts +++ b/src/Subscriber.ts @@ -6,8 +6,8 @@ import Observer from './Observer'; import Subscription from './Subscription'; export default class Subscriber extends Subscription implements Observer { - private _subscription: Subscription; - private _isUnsubscribed: boolean = false; + protected _subscription: Subscription; + protected _isUnsubscribed: boolean = false; get isUnsubscribed(): boolean { const subscription = this._subscription; @@ -73,9 +73,9 @@ export default class Subscriber extends Subscription implements Observer implements Operator { class SkipUntilSubscriber extends Subscriber { private notificationSubscriber: NotificationSubscriber = null; - constructor(public destination: Subscriber, + constructor(destination: Subscriber, private notifier: Observable) { - super(null); + super(destination); this.notificationSubscriber = new NotificationSubscriber(this); this.add(this.notifier.subscribe(this.notificationSubscriber)); } @@ -41,6 +41,17 @@ class SkipUntilSubscriber extends Subscriber { } this.notificationSubscriber.unsubscribe(); } + + unsubscribe() { + if (this._isUnsubscribed) { + return; + } else if (this._subscription) { + this._subscription.unsubscribe(); + this._isUnsubscribed = true; + } else { + super.unsubscribe(); + } + } } class NotificationSubscriber extends Subscriber {