internal IContinuation DetermineContinuation(Exception exception, int attempts) { var handler = Policies.Concat(BaselinePolicies).FirstOrDefault(x => x.Matches(exception)); if (handler == null) { return(new StopProjection()); } // attempts are zero based in this case return(handler.Continuations.Count > attempts ? handler.Continuations[attempts] : new StopProjection()); }
internal IContinuation DetermineContinuation(Exception exception, int attempts) { var policies = Policies.Concat(BaselinePolicies); foreach (var policy in policies) { if (policy.TryMatch(exception, attempts, out var continuation)) { return(continuation); } } return(new StopShard()); }