public static IObservable <T> RetryAfter <T>(this IObservable <T> source, TimeSpan period, int count, Action <Exception> onError, IScheduler scheduler = null)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            return(RepeatObservableExtensions.RepeatFinite(source, i => period, count, scheduler).Do(_ => { }, onError).Catch());
        }