public async Task Publish_NeverThrows()
        {
            var notificationHandlers = new[]
            {
                _throwingHandler.Object
            };

            var mediator = new CustomMediator(_ => notificationHandlers);

            var dispatcher = new MessageDispatcher(_logger, mediator);

            await dispatcher.PublishAsync(_notification);
        }
        public async Task Publish_WithNormalHandler_Works()
        {
            var notificationHandlers = new[]
            {
                _normalHandler.Object
            };

            var mediator = new CustomMediator(_ => notificationHandlers);

            var dispatcher = new MessageDispatcher(_logger, mediator);

            await dispatcher.PublishAsync(_notification);
        }
        public async Task Publish_Throws_AllActionsAreExecuted()
        {
            var notificationHandlers = new[]
            {
                _throwingHandler.Object,
                _normalHandler.Object
            };

            var mediator = new CustomMediator(_ => notificationHandlers);

            var dispatcher = new MessageDispatcher(_logger, mediator);

            await dispatcher.PublishAsync(_notification);

            _throwingHandler.Verify(x => x.Handle(It.IsAny <INotification>(), It.IsAny <CancellationToken>()), Times.Once);
            _normalHandler.Verify(x => x.Handle(It.IsAny <INotification>(), It.IsAny <CancellationToken>()), Times.Once);
        }