public async Task Invoke(IncomingLogicalContext context, IBusForHandler bus, Func <Task> next) { var messageType = context.LogicalMessage.Instance.GetType(); var handlers = registry.GetHandlers(messageType); foreach (var handler in handlers) { var messageHandler = new MessageHandler { Instance = handler, Invocation = (handlerInstance, message) => registry.InvokeHandle(handlerInstance, message, bus) }; context.Handler = messageHandler; await next() .ConfigureAwait(false); if (context.HandlerInvocationAbortPending) { break; } } }