public ISubscription Subscribe(IObserver <Payload> observer)
        {
            if (this.IsSubscribed)
            {
                throw new InvalidOperationException("Incoming stream allows only one Subscriber");
            }

            IncomingStreamSubscriber subscriber = new IncomingStreamSubscriber(observer, this._channel);
            var sub = this._source.Subscribe(subscriber);

            return(new IncomingStreamSubscription(sub, this._channel, subscriber));
        }
 public IncomingStreamSubscription(IDisposable subscription, Channel channel, IncomingStreamSubscriber subscriber)
 {
     this._subscription = subscription;
     this._channel      = channel;
     this._subscriber   = subscriber;
 }