public Subscription(Func <IObserver <TResult>, CancellationToken, Task <Action> > subscribeAsync, IObserver <TResult> observer) { // // We don't cancel the subscription below *ever* and want to make sure the returned resource gets disposed eventually. // Notice because we're using the AnonymousObservable<T> type, we get auto-detach behavior for free. // subscribeAsync(observer, _cts.Token) .Subscribe(_observer = new TaskDisposeCompletionObserver(observer)); }
protected override IDisposable SubscribeCore(IObserver <TResult> observer) { var cancellable = new CancellationDisposable(); var taskObservable = subscribeAsync(observer, cancellable.Token).ToObservable(); var taskCompletionObserver = new TaskDisposeCompletionObserver(observer); // // We don't cancel the subscription below *ever* and want to make sure the returned resource gets disposed eventually. // Notice because we're using the AnonymousObservable<T> type, we get auto-detach behavior for free. // taskObservable.Subscribe(taskCompletionObserver); return(StableCompositeDisposable.Create(cancellable, taskCompletionObserver)); }