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);
        }