public FixedDelaysProvider(TailDelayBehaviour tailBehaviour, [NotNull] params TimeSpan[] delays)
        {
            if (delays == null)
            {
                throw new ArgumentNullException(nameof(delays));
            }

            if (delays.Length == 0)
            {
                throw new ArgumentException("At least one delay must be specified.", nameof(delays));
            }

            this.delays        = delays;
            this.tailBehaviour = tailBehaviour;
        }
        public AdHocDelaysProvider(TailDelayBehaviour tailBehaviour, [NotNull] params Func <TimeSpan>[] providers)
        {
            if (providers == null)
            {
                throw new ArgumentNullException(nameof(providers));
            }

            if (providers.Length == 0)
            {
                throw new ArgumentException("At least one delay provider delegate must be specified.", nameof(providers));
            }

            this.providers     = providers;
            this.tailBehaviour = tailBehaviour;
        }