async login( token, isAutoLogin ) {
		const { session } = this;
		let success = false;
		set( session, "isPending", true );

		try {
			if ( isAutoLogin ) {
				this._validateSessionScope();
			}

			// tell the twitch adapter to use the token from now on
			this._updateAdapter( token );

			// validate session
			const record = await this._validateSession();

			if ( !isAutoLogin ) {
				// save auth record if this was no auto login
				await this._sessionSave( token );
			}

			// also don't forget to set the user_name on the auth record (regular properties)
			const { id: user_id, login: user_name } = record;
			setProperties( session, { user_id, user_name } );
			success = true;

		} catch ( err ) {
			// FAILURE: reset the adapter
			this._updateAdapter( null );

			throw err;

		} finally {
			set( session, "isPending", false );
			this.trigger( "login", success );
		}
	}
Update the adapter and try to authenticate with the given access token
@param {string} token
@param {boolean} isAutoLogin
@returns {Promise}