default Backoff withJitter(double jitterRate) {
        checkArgument(0.0 <= jitterRate && jitterRate <= 1.0,
                      "jitterRate: %s (expected: >= 0.0 and <= 1.0)", jitterRate);
        return withJitter(-jitterRate, jitterRate, ThreadLocalRandom::current);
    }
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 jitterRate} is used to calculate the lower and upper bound of the ultimate delay.
The lower bound will be {@code ((1 - jitterRate) * originalDelay)} and the upper bound will be
{@code ((1 + jitterRate) * originalDelay)}. For example, if the delay returned by
{@link Backoff#exponential(long, long)} is 1000 milliseconds and the provided jitter value is 0.3,
the ultimate backoff delay will be chosen between 1000 * (1 - 0.3) and 1000 * (1 + 0.3)
by {@link ThreadLocalRandom}. The rate value should be between 0.0 and 1.0.

@param jitterRate the rate that used to calculate the lower and upper bound of the backoff delay
@throws IllegalArgumentException if {@code jitterRate} is a negative value or greater than 1.0
core/src/main/java/com/linecorp/armeria/client/retry/Backoff.java