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