protected override async Task <HttpResponseMessage> ProcessRequest(HttpRequestMessage requestMessage, ConsulServiceRouterConfiguration routerConfiguration, CancellationToken cancellationToken) { var endpoint = await _serviceResolver.GetRandomEndpoint(routerConfiguration.Service, routerConfiguration.Tag, cancellationToken); if (endpoint == null) { Logger.Warn($"Can't find service: {routerConfiguration.Service}/{routerConfiguration.Tag}"); return(requestMessage.CreateResponse(HttpStatusCode.NotFound)); } var uri = CreateTargetUri(requestMessage.RequestUri, routerConfiguration, endpoint); requestMessage = PrepareRequestForForwarding(requestMessage, uri, routerConfiguration); var client = _httpClientFactory.GetHttpClient(); try { return(await client.SendAsync(requestMessage, cancellationToken)); } finally { _httpClientFactory.Release(client); } }