@@ -553,33 +553,33 @@ function isMaxTimeMSExpiredError(err: MongoError) {
553
553
) ;
554
554
}
555
555
556
- function attemptTransactionCommit < T > (
556
+ async function attemptTransactionCommit < T > (
557
557
session : ClientSession ,
558
558
startTime : number ,
559
559
fn : WithTransactionCallback < T > ,
560
560
result : any ,
561
561
options : TransactionOptions
562
562
) : 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 ) ;
578
574
}
579
575
580
- throw err ;
576
+ if ( err . hasErrorLabel ( MongoErrorLabel . TransientTransactionError ) ) {
577
+ return attemptTransaction ( session , startTime , fn , options ) ;
578
+ }
581
579
}
582
- ) ;
580
+
581
+ throw err ;
582
+ }
583
583
}
584
584
585
585
const USER_EXPLICIT_TXN_END_STATES = new Set < TxnState > ( [
0 commit comments