protected override void RequestWithFailureRetry(Uri requestUri, CancellationToken cancellationToken)
{
var retryDelay = TimeSpan.Zero;
var successfullySent = false;
do
{
var request = CreateRequest(requestUri);
if (preprocessor != null)
preprocessor(request);
HttpWebResponse response = null;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (Exception ex)
{
if (ex is AggregateException)
ex = GetInnermostException(ex);
Debug.WriteLine("{0} failing with {1}", GetType().Name, ex.Message);
}
finally
{
if (response == null || response.StatusCode != HttpStatusCode.OK)
{
WaitBetweenFailedRequests(ref retryDelay);
}
else
{
successfullySent = true;
}
}
} while (!successfullySent);
}