public Logic(TaskCompletionSource <T> promise, LastOrDefaultStage <T> stage) : base(stage.Shape) { _promise = promise; _stage = stage; SetHandler(stage.In, this); }
public Logic(TaskCompletionSource <T> promise, LastOrDefaultStage <T> stage) : base(stage.Shape) { _stage = stage; var prev = default(T); SetHandler(stage.In, onPush: () => { prev = Grab(stage.In); Pull(stage.In); }, onUpstreamFinish: () => { var head = prev; prev = default(T); promise.TrySetResult(head); CompleteStage(); }, onUpstreamFailure: cause => { prev = default(T); promise.TrySetException(cause); FailStage(cause); }); }