diff --git a/vendor/magento/module-sales/Model/Service/OrderService.php b/vendor/magento/module-sales/Model/Service/OrderService.php
index 2e062caca9a2..a73716f096e6 100644
--- a/vendor/magento/module-sales/Model/Service/OrderService.php
+++ b/vendor/magento/module-sales/Model/Service/OrderService.php
@@ -5,8 +5,10 @@
  */
 namespace Magento\Sales\Model\Service;

-use Magento\Sales\Api\OrderManagementInterface;
+use Magento\Framework\App\ObjectManager;
 use Magento\Payment\Gateway\Command\CommandException;
+use Magento\Sales\Api\OrderManagementInterface;
+use Magento\Sales\Model\OrderMutexInterface;
 use Psr\Log\LoggerInterface;

 /**
@@ -61,6 +63,11 @@ class OrderService implements OrderManagementInterface
      */
     private $logger;

+    /**
+     * @var OrderMutexInterface
+     */
+    private $orderMutex;
+
     /**
      * Constructor
      *
@@ -73,6 +80,8 @@ class OrderService implements OrderManagementInterface
      * @param \Magento\Sales\Model\Order\Email\Sender\OrderCommentSender $orderCommentSender
      * @param \Magento\Sales\Api\PaymentFailuresInterface $paymentFailures
      * @param LoggerInterface $logger
+     * @param OrderMutexInterface|null $orderMutex
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Sales\Api\OrderRepositoryInterface $orderRepository,
@@ -83,7 +92,8 @@ public function __construct(
         \Magento\Framework\Event\ManagerInterface $eventManager,
         \Magento\Sales\Model\Order\Email\Sender\OrderCommentSender $orderCommentSender,
         \Magento\Sales\Api\PaymentFailuresInterface $paymentFailures,
-        LoggerInterface $logger
+        LoggerInterface $logger,
+        ?OrderMutexInterface $orderMutex = null
     ) {
         $this->orderRepository = $orderRepository;
         $this->historyRepository = $historyRepository;
@@ -94,6 +104,7 @@ public function __construct(
         $this->orderCommentSender = $orderCommentSender;
         $this->paymentFailures = $paymentFailures;
         $this->logger = $logger;
+        $this->orderMutex = $orderMutex ?: ObjectManager::getInstance()->get(OrderMutexInterface::class);
     }

     /**
@@ -103,6 +114,22 @@ public function __construct(
      * @return bool
      */
     public function cancel($id)
+    {
+        return $this->orderMutex->execute(
+            (int) $id,
+            \Closure::fromCallable([$this, 'cancelOrder']),
+            [$id]
+        );
+    }
+
+    /**
+     * Order cancel
+     *
+     * @param int $id
+     * @return bool
+     * @SuppressWarnings(PHPMD.UnusedPrivateMethod)
+     */
+    private function cancelOrder($id): bool
     {
         $order = $this->orderRepository->get($id);
         if ($order->canCancel()) {

