public void Subscribe(InputSender.TransferDelegate transfer)
        {
            var subscriber = new Subscriber(transfer);

            if (Interlocked.CompareExchange(ref _subscriber, subscriber, null) != null)
            {
                throw new InvalidOperationException("MessageBody.Subscribe may only be called once");
            }

            var continuation = Interlocked.Exchange(ref _continuation, null);

            if (continuation != null)
            {
                continuation.Invoke();
            }
        }
 public Subscriber(InputSender.TransferDelegate transfer)
 {
     _transfer = transfer;
 }