docs: function executeWriteOperation(args, options, callback) {
    if (typeof options === 'function') (callback = options), (options = {});
    options = options || {};
  
    // TODO: once we drop Node 4, use destructuring either here or in arguments.
    const self = args.self;
    const op = args.op;
    const ns = args.ns;
    const ops = args.ops;
  
    // Pick a server
    let server = pickProxy(self, options.session);
    // No server found error out
    if (!server) return callback(new MongoError('no mongos proxy available'));
  
    const willRetryWrite =
      !args.retrying &&
      !!options.retryWrites &&
      options.session &&
      isRetryableWritesSupported(self) &&
      !options.session.inTransaction();
  
    const handler = (err, result) => {
      if (!err) return callback(null, result);
      if (!isRetryableError(err) || !willRetryWrite) {
        return callback(err);
      }
  
      // Pick another server
      server = pickProxy(self, options.session);
  
      // No server found error out with original error
      if (!server) {
        return callback(err);
      }
  
      const newArgs = Object.assign({}, args, { retrying: true });
      return executeWriteOperation(newArgs, options, callback);
    };
  
    if (callback.operationId) {
      handler.operationId = callback.operationId;
    }
  
    // increment and assign txnNumber
    if (willRetryWrite) {
      options.session.incrementTransactionNumber();
      options.willRetryWrite = willRetryWrite;
    }
  
    // rerun the operation
    server[op](ns, ops, options, handler);
  }