class ClusterControllerClientTimeouts implements JaxRsTimeouts {

    public Duration getServerTimeoutOrThrow() {
        // readTimeout = DOWNSTREAM_OVERHEAD + serverTimeout
        Duration serverTimeout = getReadTimeoutOrThrow().minus(DOWNSTREAM_OVERHEAD);

        if (serverTimeout.toMillis() < MIN_SERVER_TIMEOUT.toMillis()) {
            throw new UncheckedTimeoutException("Timed out after " + timeBudget.originalTimeout().get());
        }

        return serverTimeout;
    }

    public  ClusterControllerClientTimeouts(TimeBudget timeBudget);

}