public async Task <bool> Handle(StockOrderCommand request, CancellationToken cancellationToken) { logger.LogInformation("start stock for order {orderId} ...", request.BookStock.OrderId); await Task.Delay(500); var stock = await bookStockService.DecrementStocks(request.BookStock); if (!stock) { logger.LogInformation("order {orderId} stock failed!", request.BookStock.OrderId); throw new DomainException($"order {request.BookStock.OrderId} stock failed!"); } await mediator.Publish(new BookStockedEvent { OrderId = request.BookStock.OrderId }); return(stock); }