public IServiceCall CallAsync(string uri, string method, IDictionary <string, string> headers, IAndroidHttpClientCallTemplate callTemplate, IServiceCallback serviceCallback) { callTemplate?.OnBeforeCalling(new Java.Net.URL(uri), headers); var jsonContent = callTemplate?.BuildRequestBody(); var cancellationTokenSource = new CancellationTokenSource(); _httpNetworkAdapter.SendAsync(uri, method, headers, jsonContent, cancellationTokenSource.Token).ContinueWith(t => { var innerException = t.Exception?.InnerException; if (innerException is HttpException) { var response = (innerException as HttpException).HttpResponse; serviceCallback.OnCallFailed(new AndroidHttpException(new AndroidHttpResponse(response.StatusCode, response.Content))); } else if (innerException != null) { serviceCallback.OnCallFailed(new Java.Lang.Exception(innerException.Message)); } else { var response = t.Result; serviceCallback.OnCallSucceeded(new AndroidHttpResponse(response.StatusCode, response.Content)); } }); return(new ServiceCall(cancellationTokenSource)); }