static routeV4x4 (routingContext = {}, bookmarks = [], databaseContext = {}) {
    const dbContext = {}

    if (databaseContext.databaseName) {
      dbContext.db = databaseContext.databaseName
    }

    if (databaseContext.impersonatedUser) {
      dbContext.imp_user = databaseContext.impersonatedUser
    }

    return new RequestMessage(
      ROUTE,
      [routingContext, bookmarks, dbContext],
      () =>
        `ROUTE ${json.stringify(routingContext)} ${json.stringify(
          bookmarks
        )} ${json.stringify(dbContext)}`
    )
  }
Generate the ROUTE message, this message is used to fetch the routing table from the server

@param {object} routingContext The routing context used to define the routing table. Multi-datacenter deployments is one of its use cases
@param {string[]} bookmarks The list of the bookmarks should be used
@param {object} databaseContext The context inforamtion of the database to get the routing table for.
@param {string} databaseContext.databaseName The name of the database to get the routing table.
@param {string} databaseContext.impersonatedUser The name of the user to impersonation when getting the routing table.
@return {RequestMessage} the ROUTE message.