internal static ICommandDeliverer <TAggregate> InterceptDeliver <TAggregate>( this ICommandDeliverer <TAggregate> deliverer, ScheduledCommandInterceptor <TAggregate> deliver = null) { deliver = deliver ?? (async(c, next) => await next(c)); return(Create <TAggregate>( async command => await deliver(command, async c => await deliverer.Deliver(c)))); }
internal static async Task DeserializeAndDeliverScheduledCommand <TAggregate>( ScheduledCommand scheduled, ICommandDeliverer <TAggregate> scheduler) { try { var command = scheduled.ToScheduledCommand <TAggregate>(); await scheduler.Deliver(command); scheduled.Result = command.Result; } catch (Exception exception) { scheduled.Result = new CommandFailed(scheduled, exception); } }