SessionCallback
Used to receive events in an asynchronous manner. Events can take the form of results, exceptions, etc., that can occur within the scope of a session.
Note: The SessionCallback must exist for the lifetime of the session. The callback cannot be destroyed until the session is closed.