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));
            }