namespace AdjustTimeoutBasedOnRetry
public static void Main(string[] args)
const string RetryCountKey = "RetryCount";
RetryPolicy retry = Policy
.Retry(3, (exception, retryCount, context) =>
Console.WriteLine("Storing retry count of " + retryCount + " in execution context.");
context[RetryCountKey] = retryCount;
TimeoutPolicy timeoutBasedOnRetryCount = Policy
tryCount = (int) context[RetryCountKey];
int timeoutMs = 25 * (tryCount + 1);
Console.WriteLine("Obtained retry count of " + tryCount + " from context, thus timeout is " + timeoutMs + " ms.");
return TimeSpan.FromMilliseconds(timeoutMs);
PolicyWrap policiesTogether = retry.Wrap(timeoutBasedOnRetryCount);
policiesTogether.Execute(() => {throw new Exception();});
Console.WriteLine("Execution terminated with " + e.Message);