private async Task<HttpResponseMessage> ExecuteServiceCallAsync(HttpCommunicationClient client, HttpContext context, byte[] contextRequestBody)
        {
            // create request and copy all details

            HttpRequestMessage req = new HttpRequestMessage
            {
                Method = new HttpMethod(context.Request.Method),
                RequestUri = new Uri(context.Request.Path + context.Request.QueryString, UriKind.Relative)
            };

            if (contextRequestBody != null)
            {
                req.Content = new ByteArrayContent(contextRequestBody);
            }

            req.CopyHeadersFromCurrentContext(context);
            req.AddProxyHeaders(context);

            // execute request

            HttpResponseMessage response = await client.HttpClient.SendAsync(req, context.RequestAborted);

            // cases in which we want to invoke the retry logic from the ClientFactory
            int statusCode = (int) response.StatusCode;
            if ((statusCode >= 500 && statusCode < 600) || statusCode == (int) HttpStatusCode.NotFound)
            {
                throw new HttpResponseException("Service call failed", response);
            }

            return response;
        }
 public static void AbortClient(this ILogger logger, HttpCommunicationClient client)
 {
     _abortClient(logger, client?.Endpoint?.Address, null);
 }
 public static void ValidateClient(this ILogger logger, HttpCommunicationClient client, string endpoint = null)
 {
     _validateClient(logger, client?.Endpoint?.Address, endpoint, null);
 }
 public static void ValidateClient(this ILogger logger, HttpCommunicationClient client, string endpoint = null)
 {
     _validateClient(logger, client?.Endpoint?.Address, endpoint, null);
 }
 public static void AbortClient(this ILogger logger, HttpCommunicationClient client)
 {
     _abortClient(logger, client?.Endpoint?.Address, null);
 }