Skip to content

Commit 3d7384f

Browse files
authored
fix(clerk-js): Retry checkout confirm if there is another checkout already in progress (#5771)
1 parent 93d03e4 commit 3d7384f

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

.changeset/eighty-windows-grow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
---
4+
5+
Retry checkout confirmation if there is another checkout in progress

packages/clerk-js/src/core/resources/CommerceCheckout.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
__experimental_CommercePlan,
1414
__experimental_CommerceSubscription,
1515
BaseResource,
16+
isClerkAPIResponseError,
1617
} from './internal';
1718

1819
export class __experimental_CommerceCheckout extends BaseResource implements __experimental_CommerceCheckoutResource {
@@ -75,8 +76,16 @@ export class __experimental_CommerceCheckout extends BaseResource implements __e
7576
initialDelay: 2 * 1_000,
7677
jitter: false,
7778
shouldRetry(error: any, iterations: number) {
79+
if (!isClerkAPIResponseError(error) || iterations >= 4) {
80+
return false;
81+
}
82+
7883
const status = error?.status;
79-
return !!status && status >= 500 && iterations <= 4;
84+
const isServerError = status >= 500;
85+
const checkoutAlreadyInProgress =
86+
status === 409 && error.errors?.[0]?.code === 'checkout_already_in_progress';
87+
88+
return isServerError || checkoutAlreadyInProgress;
8089
},
8190
},
8291
);

0 commit comments

Comments
 (0)