public Duration computeReadTimeout(HttpRequestMessage request, int attemptNum) {
        IClientConfig clientConfig = getRequestClientConfig(request);
        Long originTimeout = getOriginReadTimeout();
        Long requestTimeout = getRequestReadTimeout(clientConfig);

        long computedTimeout;
        if (originTimeout == null && requestTimeout == null) {
            computedTimeout = MAX_OUTBOUND_READ_TIMEOUT_MS.get();
        } else if (originTimeout == null || requestTimeout == null) {
            computedTimeout = originTimeout == null ? requestTimeout : originTimeout;
        } else {
            // return the stricter (i.e. lower) of the two timeouts
            computedTimeout = Math.min(originTimeout, requestTimeout);
        }

        // enforce max timeout upperbound
        return Duration.ofMillis(Math.min(computedTimeout, MAX_OUTBOUND_READ_TIMEOUT_MS.get()));
    }
@Test
    void computeReadTimeout_default() {
        Duration timeout = originTimeoutManager.computeReadTimeout(request, 1);

        assertEquals(OriginTimeoutManager.MAX_OUTBOUND_READ_TIMEOUT_MS.get(), timeout.toMillis());
    }