public async Task Send <TCommand, TEvent>(ICommandWrapper <TCommand> parentCommand, IReadOnlyCollection <TEvent> events) where TCommand : ICommand where TEvent : IEvent { var wrappedEvents = events .Select(e => e.Wrap(parentCommand)) .ToArray(); await _eventStore.Save(wrappedEvents); if (parentCommand.IsLinkToJob) { await _jobHandler.Associate(parentCommand, wrappedEvents); } foreach (var wrappedEvent in wrappedEvents) { await _eventQueue.Send(wrappedEvent); } }