internal void setFailed(IdentityHttpResponse onFailure)
 {
     _failure = onFailure;
     foreach (OnFailure listener in _onFailureListeners)
     {
         listener.Invoke(_failure);
     }
 }
        public void OnTaskFailure(string failureMessage)
        {
            //parse the IdentityHttpResponse
            Error error   = new Error();
            var   message = JsonUtility.FromJson <OnTaskFailureMessage>(failureMessage);

            if (String.IsNullOrEmpty(message.CallbackUuid))
            {
                Debug.Log("CallbackID not provided, aborting OnTaskFailure callback:\n" + JsonUtility.ToJson(message));
                return;
            }
            if (!String.IsNullOrEmpty(message.ErrorCode))
            {
                error.Code = message.ErrorCode;
            }
            String errorMessage = "";

            if (!String.IsNullOrEmpty(message.Domain))
            {
                errorMessage += "Domain: " + message.Domain;
            }
            if (!String.IsNullOrEmpty(message.UserInfo))
            {
                if (!String.IsNullOrEmpty(message.Domain))
                {
                    errorMessage += "\n";
                }
                errorMessage += "User Info: " + message.UserInfo;
            }
            IdentityHttpResponse identityHttpResponse = new IdentityHttpResponse()
            {
                Errors = new List <Error> {
                    error
                },
                IsSuccessful = false
            };
            int httpCode;

            if (!String.IsNullOrEmpty(message.ErrorCode) && Int32.TryParse(message.ErrorCode, out httpCode))
            {
                identityHttpResponse.HttpCode = httpCode;
            }

            //Invoke the delegate with the specified callback Id
            BaseTask foundTask;

            if (_taskCallbacks.TryGetValue(message.CallbackUuid, out foundTask))
            {
                if (foundTask != null)
                {
                    foundTask.setFailed(identityHttpResponse);
                }
            }
        }