public virtual async Task Invoke(LogicalMessage outgoingLogicalMessage, DeliveryOptions options, EndpointConfiguration.ReadOnly configuration, TransportMessage incomingTransportMessage = null)
{
executingLogicalPipeline = new Queue<IOutgoingLogicalStep>(registeredlogicalPipelineSteps);
var logicalContext = new OutgoingLogicalContext(outgoingLogicalMessage, options, configuration);
await InvokeLogical(logicalContext)
.ConfigureAwait(false);
// We assume that someone in the pipeline made transport message
var outgoingTransportMessage = logicalContext.Get<TransportMessage>();
executingTransportPipeline = new Queue<IOutgoingTransportStep>(registeredTransportPipelineSteps);
var transportContext = new OutgoingTransportContext(outgoingLogicalMessage, outgoingTransportMessage, options, configuration, incomingTransportMessage);
await InvokeTransport(transportContext)
.ConfigureAwait(false);
}