public NeverEndingSynchronousCompletionAsyncResultObservable(SynchronousCompletionAsyncResult <T> task)
 {
     if (task.IsCompleted)
     {
         _value = task.GetResult();
     }
     else
     {
         _asyncResult = task;
     }
 }
            public IDisposable Subscribe(IObserver <T> observer)
            {
                if (_asyncResult?.IsCompleted == true)
                {
                    _value       = _asyncResult.Value.GetResult();
                    _asyncResult = null;
                }

                if (_asyncResult != null)
                {
                    _asyncResult.Value.OnCompleted(() =>
                    {
                        observer.OnNext(_asyncResult.Value.GetResult());
                    });
                }
                else
                {
                    observer.OnNext(_value);
                }

                return(Disposable.Empty);
            }