@Override
    public void backOff(final HttpRoute route) {
        final Instant now = Instant.now();

        if (shouldSkip(route, now)) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("BackOff not applied for route: {}, cool-down period not elapsed", route);
            }
            return;
        }

        final AtomicInteger attempt = routeAttempts.compute(route, (r, oldValue) -> {
            if (oldValue == null) {
                return new AtomicInteger(1);
            }
            oldValue.incrementAndGet();
            return oldValue;
        });

        getLastRouteBackoffs().put(route, now);

        final int currentMax = getConnPerRoute().getMaxPerRoute(route);
        getConnPerRoute().setMaxPerRoute(route, getBackedOffPoolSize(currentMax));

        attempt.incrementAndGet();

        if (LOG.isDebugEnabled()) {
            LOG.debug("Backoff applied for route: {}, new max connections: {}", route, getConnPerRoute().getMaxPerRoute(route));
        }
    }
Constructs a new LinearBackoffManager with the specified connection pool control and backoff increment.

@param connPoolControl the connection pool control to be used by this LinearBackoffManager
@param increment       the backoff increment to be used when adjusting connection pool sizes
@throws IllegalArgumentException if connPoolControl is {@code null} or increment is not positive
httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/LinearBackoffManager.java