private IEnumerator Interceptors(Method method, string uri, Payloads payload = null, Dictionary <string, string> pathParams = null, Callback callback = null, Fallback fallback = null) { UnityWebRequest webRequest = new UnityWebRequest(baseUri + uri, method.ToString()); webRequest.SetRequestHeader("Content-Type", "application/json"); webRequest.SetRequestHeader("Authorization", "Bearer " + Token.GetToken()); if (payload != null) { byte[] bodyRaw = Encoding.UTF8.GetBytes(PostSerializer.SerializePostData(payload)); webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw); } webRequest.downloadHandler = new DownloadHandlerBuffer(); yield return(webRequest.SendWebRequest()); if (webRequest.isNetworkError) { if (webRequest.responseCode == 0) { webRequest.Abort(); Request request = new Request(method, uri, payload, pathParams); Resend(request, callback, fallback); } } else if (webRequest.isHttpError) { if (webRequest.responseCode == CODE_BLACKLISTED_USER) { // Save Request, Callback and Fallback State.PendingFullRequestWhileRefreshingToken = new FullRequest( new Request(method, uri, payload, pathParams), callback, fallback ); RefreshToken.Refresh(); } else { var responseJson = webRequest.downloadHandler.text; fallback(webRequest.responseCode, responseJson); } } else { var responseJson = webRequest.downloadHandler.text; callback(webRequest.responseCode, responseJson); } }