public override async Task Invoke(IIncomingPhysicalMessageContext context, Func <Task> next)
        {
            using (var session = new PipelineContextSession(context))
            {
                BusSession.SetCurrentPipelineContext(session);

                await next();
            }
        }
        internal static void SetCurrentPipelineContext(PipelineContextSession session)
        {
            if (PipelineContext.Value != null)
            {
                throw new InvalidOperationException("Attempt to overwrite an existing pipeline context in BusSession.Current.");
            }

            PipelineContext.Value = session;
        }