respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {
	        return _this2.client.makeUnauthenticatedRequest('respondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {
	          if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {
	            challengeResponses.DEVICE_KEY = null;
	            _this2.deviceKey = null;
	            _this2.randomPassword = null;
	            _this2.deviceGroupKey = null;
	            _this2.clearCachedDeviceKeyAndPassword();
	            return respondToAuthChallenge(challenge, challengeCallback);
	          }
	          return challengeCallback(errChallenge, dataChallenge);
	        });
	      }
This is used for authenticating the user. it calls the AuthenticationHelper for SRP related
stuff
@param {AuthenticationDetails} authDetails Contains the authentication data
@param {object} callback Result callback map.
@param {onFailure} callback.onFailure Called on any error.
@param {newPasswordRequired} callback.newPasswordRequired new
       password and any required attributes are required to continue
@param {mfaRequired} callback.mfaRequired MFA code
       required to continue.
@param {customChallenge} callback.customChallenge Custom challenge
       response required to continue.
@param {authSuccess} callback.onSuccess Called on success with the new session.
@returns {void}