<PackageReference Include="System.Reactive" Version="4.1.2" />

Defer<TValue>

sealed class Defer<TValue> : Producer<TValue, _<TValue>>, IEvaluatableObservable<TValue>
namespace System.Reactive.Linq.ObservableImpl { internal sealed class Defer<TValue> : Producer<TValue, Defer<TValue>._>, IEvaluatableObservable<TValue> { internal sealed class _ : IdentitySink<TValue> { private readonly Func<IObservable<TValue>> _observableFactory; public _(Func<IObservable<TValue>> observableFactory, IObserver<TValue> observer) : base(observer) { _observableFactory = observableFactory; } public void Run() { IObservable<TValue> observable = null; try { observable = _observableFactory(); } catch (Exception error) { ForwardOnError(error); return; } Run(observable); } } private readonly Func<IObservable<TValue>> _observableFactory; public Defer(Func<IObservable<TValue>> observableFactory) { _observableFactory = observableFactory; } protected override _ CreateSink(IObserver<TValue> observer) { return new _(_observableFactory, observer); } protected override void Run(_ sink) { sink.Run(); } public IObservable<TValue> Eval() { return _observableFactory(); } } }