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

            return(RepeatObservableExtensions.RepeatInfinite(source, period, scheduler).Catch());
        }