def start_session(options = {})
      cluster.send(:get_session, self, options.merge(implicit: false)) ||
        (raise Error::InvalidSession.new(Session::SESSIONS_NOT_SUPPORTED))
    end
def start_session(options = {})
      cluster.send(:get_session, self, options.merge(implicit: false)) ||
        (raise Error::InvalidSession.new(Session::SESSIONS_NOT_SUPPORTED))
    end
Start a session.

 If the deployment does not support sessions, raises
 Mongo::Error::InvalidSession. This exception can also be raised when
 the driver is not connected to a data-bearing server, for example
 during failover.

 @example Start a session.
   client.start_session(causal_consistency: true)

 @param [ Hash ] options The session options. Accepts the options
   that Session#initialize accepts.

 @note A Session cannot be used by multiple threads at once; session
   objects are not thread-safe.

 @return [ Session ] The session.

 @since 2.5.0