public Logic(PreStartFailer <T> stage) : base(stage.Shape)
                {
                    _stage = stage;

                    SetHandler(stage.Outlet, () => Pull(stage.Inlet));
                    SetHandler(stage.Inlet, () => Push(stage.Outlet, Grab(stage.Inlet)));
                }
        public void Interpreter_must_call_OnError_when_PreStart_fails()
        {
            var op = new PreStartFailer <string>(() =>
            {
                throw new TestException("Boom!");
            });

            WithOneBoundedSetup(op, (lastEvents, upstream, downstream) =>
            {
                var events = lastEvents().ToArray();
                events[0].Should().Be(new Cancel());
                events[1].Should().BeOfType <OnError>();
                ((OnError)events[1]).Cause.Should().BeOfType <TestException>();
                ((OnError)events[1]).Cause.Message.Should().Be("Boom!");
            });
        }