requestRoutingInformation ({
    routingContext = {},
    sessionContext = {},
    onError,
    onCompleted
  }) {
    const resultObserver = this.run(
      CALL_GET_ROUTING_TABLE,
      { [CONTEXT]: routingContext },
      { ...sessionContext, txConfig: TxConfig.empty() }
    )

    return new ProcedureRouteObserver({
      resultObserver,
      onProtocolError: this._onProtocolError,
      onError,
      onCompleted
    })
  }
Request routing information

@param {Object} param -
@param {object} param.routingContext The routing context used to define the routing table.
 Multi-datacenter deployments is one of its use cases
@param {string} param.databaseName The database name
@param {Bookmarks} params.sessionContext.bookmarks The bookmarks used for requesting the routing table
@param {string} params.sessionContext.mode The session mode
@param {string} params.sessionContext.database The database name used on the session
@param {function()} params.sessionContext.afterComplete The session param used after the session closed
@param {function(err: Error)} param.onError
@param {function(RawRoutingTable)} param.onCompleted
@returns {RouteObserver} the route observer