default Backoff withJitter(double minJitterRate, double maxJitterRate, Supplier<Random> randomSupplier) {
        return new JitterAddingBackoff(this, minJitterRate, maxJitterRate, randomSupplier);
    }
Returns a {@link Backoff} that adds a random jitter value to the original delay using
<a href="https://www.awsarchitectureblog.com/2015/03/backoff.html">full jitter</a> strategy.
The {@code minJitterRate} and {@code maxJitterRate} is used to calculate the lower and upper bound
of the ultimate delay. The lower bound will be {@code ((1 - minJitterRate) * originalDelay)} and the
upper bound will be {@code ((1 + maxJitterRate) * originalDelay)}. For example, if the delay
returned by {@link Backoff#exponential(long, long)} is 1000 milliseconds and the {@code minJitterRate}
is -0.2, {@code maxJitterRate} is 0.3, the ultimate backoff delay will be chosen between
1000 * (1 - 0.2) and 1000 * (1 + 0.3). The rate values should be between -1.0 and 1.0.

@param minJitterRate  the rate that used to calculate the lower bound of the backoff delay
@param maxJitterRate  the rate that used to calculate the upper bound of the backoff delay
@param randomSupplier the supplier that provides {@link Random} in order to calculate the ultimate delay
@throws IllegalArgumentException if {@code minJitterRate} is greater than {@code maxJitterRate} or if the
                                 {@code minJitterRate} and {@code maxJitterRate} values are not in
                                 between -1.0 and 1.0
core/src/main/java/com/linecorp/armeria/client/retry/Backoff.java