@@ -11,6 +11,7 @@ import { promisify } from 'util';
11
11
import { deserialize , type Document , ObjectId , resolveBSONOptions } from './bson' ;
12
12
import type { Connection } from './cmap/connection' ;
13
13
import { MAX_SUPPORTED_WIRE_VERSION } from './cmap/wire_protocol/constants' ;
14
+ import { MongoDBResponse } from './cmap/wire_protocol/responses' ;
14
15
import type { Collection } from './collection' ;
15
16
import { kDecoratedKeys , LEGACY_HELLO_COMMAND } from './constants' ;
16
17
import type { AbstractCursor } from './cursor/abstract_cursor' ;
@@ -23,7 +24,8 @@ import {
23
24
MongoNetworkTimeoutError ,
24
25
MongoNotConnectedError ,
25
26
MongoParseError ,
26
- MongoRuntimeError
27
+ MongoRuntimeError ,
28
+ MongoWriteConcernError
27
29
} from './error' ;
28
30
import type { Explain } from './explain' ;
29
31
import type { MongoClient } from './mongo_client' ;
@@ -1416,3 +1418,15 @@ export function decorateDecryptionResult(
1416
1418
decorateDecryptionResult ( decrypted [ k ] , originalValue , false ) ;
1417
1419
}
1418
1420
}
1421
+
1422
+ /** Called with either a plain object or MongoDBResponse */
1423
+ export function throwIfWriteConcernError ( response : unknown ) : void {
1424
+ if ( typeof response === 'object' && response != null ) {
1425
+ if ( MongoDBResponse . is ( response ) && response . has ( 'writeConcernError' ) ) {
1426
+ const object = response . toObject ( ) ;
1427
+ throw new MongoWriteConcernError ( object . writeConcernError , object ) ;
1428
+ } else if ( 'writeConcernError' in response ) {
1429
+ throw new MongoWriteConcernError ( response . writeConcernError as any , response ) ;
1430
+ }
1431
+ }
1432
+ }
0 commit comments