private static async Task <T> ProcessResponse <T>(HttpResponseMessage response)
        {
            var responseString = await response.Content.ReadAsStringAsync();

            if (!response.IsSuccessStatusCode)
            {
                ResponseExceptionFactory.CreateResponseException(responseString, null);
            }

            return(JsonConvert.DeserializeObject <T>(responseString, new JsonSerializerSettings {
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            }));
        }
        private static async Task <HttpResponseMessage> SendRequest(HttpClient httpClient, HttpRequestMessage request)
        {
            try
            {
                return(await httpClient.SendAsync(request));
            }
            // handle timeouts
            catch (TaskCanceledException)
            {
                ResponseExceptionFactory.CreateTimeoutException();
            }

            return(null);
        }