/// <inheritdoc/>
        public async Task RegisterAsync()
        {
            try
            {
                Logger.LogNoisyInformation($"Attempting Registration of {_serviceSettings.Name} to Consul at {_serviceSettings.ConsulUrl}");
                Logger.LogNoisyInformation($"Service Address: {_serviceSettings.Address}");
                Logger.LogNoisyInformation($"Service Port: {_serviceSettings.Port}");
                LogAboutHealthCheck();
                var httpClient = _httpClientFactory.CreateClient();
                var request    = HttpRequestMessageProvider.Get(HttpMethod.Put, _serviceSettings.ConsulUrl, "v1/agent/service/register");
                request.Content = new StringContent(JsonConvert.SerializeObject(_serviceSettings), System.Text.Encoding.UTF8, "application/json");
                var response = await httpClient.SendAsync(request);

                LogResponse(response);
            }
            catch (Exception e)
            {
                Logger.LogNoisyError(e, $"Error occured registering service ${_serviceSettings.Name} with Consul");
                Logger.LogNoisyWarning($"Service {_serviceSettings.Name} failed to register with Consul. This may impact performance of other services as they won't be able to locate it");
            }
        }
        /// <inheritdoc/>
        public async Task <ConsulRegistrationSettings> GetServiceRawSettingsAsync(string serviceId)
        {
            Logger.LogNoisyInformation($"Fetching information about service '{serviceId}'");
            var httpClient = _httpClientFactory.CreateClient();
            var request    = HttpRequestMessageProvider.Get(
                HttpMethod.Get,
                _serviceSettings.ConsulUrl,
                $"v1/agent/service/{serviceId}");
            var response = await httpClient.SendAsync(request);

            LogResponse(response);
            if (response.IsSuccessStatusCode)
            {
                var responseString = await response.Content.ReadAsStringAsync();

                return(JsonConvert.DeserializeObject <ConsulRegistrationSettings>(responseString));
            }
            else
            {
                return(null);
            }
        }