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);
            }
        }