public Task Send <T>(T message, CancellationToken cancellationToken)
            where T : class
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            var context = new RoutingSlipSendContext <T>(message, cancellationToken, _destinationAddress);

            _builder.AddSubscription(_destinationAddress, _events, _include, _activityName, context.GetMessageEnvelope());

            return(TaskUtil.Completed);
        }
        public async Task Send <T>(T message, IPipe <SendContext <T> > pipe, CancellationToken cancellationToken)
            where T : class
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (pipe == null)
            {
                throw new ArgumentNullException(nameof(pipe));
            }

            var context = new RoutingSlipSendContext <T>(message, cancellationToken, _destinationAddress);

            await pipe.Send(context).ConfigureAwait(false);

            _builder.AddSubscription(_destinationAddress, _events, _include, _activityName, context.GetMessageEnvelope());
        }