private async Task <HttpResponseMessage> DownloadAsync(Uri requestUri, int requestDelay, string acceptMediaType)
        {
            if (_httpClient == null)
            {
                _httpClient = _proxy.CreateHttpClient();
            }

            var requestAttemptNumber = 1;

            var request = _proxy.GenerateRequestMessage(HttpMethod.Get, requestUri, acceptMediaType);

            HttpResponseMessage response;

            do
            {
                await Task.Delay(requestDelay);

                response = await GetHttpResponseMessage(request);

                if (response != null && response.IsSuccessStatusCode && response.Content.Headers.ContentLength > 0)
                {
                    break;
                }
                request = _proxy.GenerateRequestMessage(HttpMethod.Get, requestUri, acceptMediaType);
            } while (requestAttemptNumber++ <= _retryAttempts);

            return(response);
        }