beginTransaction ({
    bookmarks,
    txConfig,
    database,
    mode,
    impersonatedUser,
    notificationFilter,
    beforeError,
    afterError,
    beforeComplete,
    afterComplete
  } = {}) {
    return this.run(
      'BEGIN',
      bookmarks ? bookmarks.asBeginTransactionParameters() : {},
      {
        bookmarks,
        txConfig,
        database,
        mode,
        impersonatedUser,
        notificationFilter,
        beforeError,
        afterError,
        beforeComplete,
        afterComplete,
        flush: false
      }
    )
  }
Begin an explicit transaction.
@param {Object} param
@param {Bookmarks} param.bookmarks the bookmarks.
@param {TxConfig} param.txConfig the configuration.
@param {string} param.database the target database name.
@param {string} param.mode the access mode.
@param {string} param.impersonatedUser the impersonated user
@param {NotificationFilter} param.notificationFilter the notification filter.
@param {function(err: Error)} param.beforeError the callback to invoke before handling the error.
@param {function(err: Error)} param.afterError the callback to invoke after handling the error.
@param {function()} param.beforeComplete the callback to invoke before handling the completion.
@param {function()} param.afterComplete the callback to invoke after handling the completion.
@returns {StreamObserver} the stream observer that monitors the corresponding server response.