public static void Main()
var policy = Policy.Handle<HttpOperationException>(ex => new[] { HttpStatusCode.InternalServerError, HttpStatusCode.TooManyRequests }.Contains(ex.Response.StatusCode)).WaitAndRetryAsync(5, retryAttempt => {
Console.WriteLine($"Attempt {retryAttempt}");
return TimeSpan.FromMilliseconds(Math.Pow(5, retryAttempt));
policy.ExecuteAsync(() => {
throw new HttpOperationException {Response = new HttpResponseMessageWrapper(new HttpResponseMessage(HttpStatusCode.NotFound), string.Empty)};
}).GetAwaiter().GetResult();