Skip to content

Commit a32367f

Browse files
attemptTransactionCommit
1 parent e38ae71 commit a32367f

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/sessions.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -553,33 +553,33 @@ function isMaxTimeMSExpiredError(err: MongoError) {
553553
);
554554
}
555555

556-
function attemptTransactionCommit<T>(
556+
async function attemptTransactionCommit<T>(
557557
session: ClientSession,
558558
startTime: number,
559559
fn: WithTransactionCallback<T>,
560560
result: any,
561561
options: TransactionOptions
562562
): Promise<T> {
563-
return session.commitTransaction().then(
564-
() => result,
565-
(err: MongoError) => {
566-
if (
567-
err instanceof MongoError &&
568-
hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT) &&
569-
!isMaxTimeMSExpiredError(err)
570-
) {
571-
if (err.hasErrorLabel(MongoErrorLabel.UnknownTransactionCommitResult)) {
572-
return attemptTransactionCommit(session, startTime, fn, result, options);
573-
}
574-
575-
if (err.hasErrorLabel(MongoErrorLabel.TransientTransactionError)) {
576-
return attemptTransaction(session, startTime, fn, options);
577-
}
563+
try {
564+
await session.commitTransaction();
565+
return result;
566+
} catch (err) {
567+
if (
568+
err instanceof MongoError &&
569+
hasNotTimedOut(startTime, MAX_WITH_TRANSACTION_TIMEOUT) &&
570+
!isMaxTimeMSExpiredError(err)
571+
) {
572+
if (err.hasErrorLabel(MongoErrorLabel.UnknownTransactionCommitResult)) {
573+
return attemptTransactionCommit(session, startTime, fn, result, options);
578574
}
579575

580-
throw err;
576+
if (err.hasErrorLabel(MongoErrorLabel.TransientTransactionError)) {
577+
return attemptTransaction(session, startTime, fn, options);
578+
}
581579
}
582-
);
580+
581+
throw err;
582+
}
583583
}
584584

585585
const USER_EXPLICIT_TXN_END_STATES = new Set<TxnState>([

0 commit comments

Comments
 (0)