diff --git a/vendor/magento/module-sales-rule/Plugin/CouponUsagesIncrement.php b/vendor/magento/module-sales-rule/Plugin/CouponUsagesIncrement.php
index 66a32f37eee2f..a38cc35136cfc 100644
--- a/vendor/magento/module-sales-rule/Plugin/CouponUsagesIncrement.php
+++ b/vendor/magento/module-sales-rule/Plugin/CouponUsagesIncrement.php
@@ -10,6 +10,7 @@
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Quote\Model\Quote;
 use Magento\Quote\Model\QuoteManagement;
+use Magento\Sales\Api\Data\OrderInterface;
 use Magento\SalesRule\Model\Coupon\Quote\UpdateCouponUsages;

 /**
@@ -34,13 +35,14 @@ public function __construct(UpdateCouponUsages $updateCouponUsages)
      * Increments number of coupon usages before placing order
      *
      * @param QuoteManagement $subject
+     * @param \Closure $proceed
      * @param Quote $quote
      * @param array $orderData
-     * @return void
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     * @return OrderInterface|null
      * @throws NoSuchEntityException
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
      */
-    public function beforeSubmit(QuoteManagement $subject, Quote $quote, $orderData = [])
+    public function aroundSubmit(QuoteManagement $subject, \Closure $proceed, Quote $quote, $orderData = [])
     {
         /* if coupon code has been canceled then need to notify the customer */
         if (!$quote->getCouponCode() && $quote->dataHasChangedFor('coupon_code')) {
@@ -48,5 +50,11 @@ public function beforeSubmit(QuoteManagement $subject, Quote $quote, $orderData
         }

         $this->updateCouponUsages->execute($quote, true);
+        try {
+            return $proceed($quote, $orderData);
+        } catch (\Throwable $e) {
+            $this->updateCouponUsages->execute($quote, false);
+            throw $e;
+        }
     }
 }
diff --git a/vendor/magento/module-sales-rule/etc/events.xml b/vendor/magento/module-sales-rule/etc/events.xml
index 0c8335b0a6716..c55c37de71aac 100644
--- a/vendor/magento/module-sales-rule/etc/events.xml
+++ b/vendor/magento/module-sales-rule/etc/events.xml
@@ -39,7 +39,4 @@
     <event name="sales_quote_collect_totals_before">
         <observer name="salesrule_sales_quote_collect_totals_before" instance="\Magento\SalesRule\Observer\QuoteResetAppliedRulesObserver" />
     </event>
-    <event name="sales_model_service_quote_submit_failure">
-        <observer name="sales_rule_decrement_coupon_usage_quote_submit_failure" instance="\Magento\SalesRule\Observer\CouponUsagesDecrement" />
-    </event>
 </config>
