public RetryTracker(int?maxRetries, TimeSpan?timeLimit, RetryInterval retryInterval, bool throwOnFailure = true) { this.maxRetries = maxRetries; if (maxRetries.HasValue && maxRetries.Value < 0) { throw new ArgumentException("maxretries must be 0 or more if set"); } this.timeLimit = timeLimit; this.retryInterval = retryInterval; ThrowOnFailure = throwOnFailure; }