protected override IDisposable SubscribeCore(IObserver <T> observer) { if (_subject.Value != null) { observer.OnNext(_subject.Value !); return(Disposable.Empty); } // Keep taking values until a non-null value is received and only emit that one. return(_subject.TakeUntil(value => value != null).LastAsync().Subscribe(value => { Debug.Assert(value != null, "value != null"); observer.OnNext(value !); }, observer.OnError, observer.OnCompleted)); }