rxSession ({
    defaultAccessMode = WRITE,
    bookmarks,
    database = '',
    fetchSize,
    impersonatedUser,
    bookmarkManager,
    notificationFilter,
    auth
  } = {}) {
    return new RxSession({
      session: this._newSession({
        defaultAccessMode,
        bookmarkOrBookmarks: bookmarks,
        database,
        impersonatedUser,
        auth,
        reactive: false,
        fetchSize: validateFetchSizeValue(fetchSize, this._config.fetchSize),
        bookmarkManager,
        notificationFilter,
        log: this._log
      }),
      config: this._config,
      log: this._log
    })
  }
Acquire a reactive session to communicate with the database. The session will
borrow connections from the underlying connection pool as required and
should be considered lightweight and disposable.

This comes with some responsibility - make sure you always call
{@link close} when you are done using a session, and likewise,
make sure you don't close your session before you are done using it. Once
it is closed, the underlying connection will be released to the connection
pool and made available for others to use.

@public
@param {SessionConfig} config
@returns {RxSession} new reactive session.