public static Task <PolicyResult <TResult> > RaiseResultSequenceOnExecuteAndCaptureAsync <TResult>(this ContextualPolicy <TResult> policy, IDictionary <string, object> contextData, IEnumerable <TResult> resultsToRaise) { var enumerator = resultsToRaise.GetEnumerator(); return(policy.ExecuteAndCaptureAsync(() => { if (!enumerator.MoveNext()) { throw new ArgumentOutOfRangeException("resultsToRaise", "Not enough TResult values in resultsToRaise."); } return Task.FromResult(enumerator.Current); }, contextData)); }