private async Task <R> Send <T, R>(HttpMethod method, string uri, T postData, IDictionary <string, string> parameters) { // Create content if needed HttpContent content = CreateContent(method, postData); // bind parameters and send string parameterUri = UriUtil.BindParameters(uri, parameters); HttpResponseMessage response = null; if (modifier != null) { var request = new HttpRequestMessage(method, parameterUri); request.Content = content; modifier.ModifyRequest(request, uri, parameters); response = await client.SendAsync(request).ConfigureAwait(false); } else { response = await SendAsync(method, parameterUri, content).ConfigureAwait(false); } if (!response.IsSuccessStatusCode) { throw new HttpResponseException(response); } return(await response.Content.ReadAsAsync <R>()); }