/// <summary>
        /// Executes this strategy to dispatch an event
        /// </summary>
        /// <typeparam name="TEvent">Event type</typeparam>
        /// <param name="event">Event data</param>
        /// <param name="handlers">Event handlers</param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task Dispatch <TEvent>(TEvent @event, IEnumerable <IEventHandler <TEvent> > handlers, CancellationToken cancellationToken) where TEvent : IEvent
        {
            var queuedEvent = (QueuedEventWrapperBase)
                              Activator.CreateInstance(typeof(QueuedEventWrapper <>).MakeGenericType(typeof(TEvent)), @event, handlers);

            await _eventQueue.EnqueueEvent(queuedEvent, cancellationToken);
        }