public int getResponseTimeOut() {
        int maxRetryNextServer = 0;
        int maxRetrySameServer = 0;
        if (defaultRetryHandler != null) {
            maxRetryNextServer = defaultRetryHandler.getMaxRetriesOnNextServer();
            maxRetrySameServer = defaultRetryHandler.getMaxRetriesOnSameServer();
        } else {
            maxRetryNextServer = clientConfig.get(IClientConfigKey.Keys.MaxAutoRetriesNextServer, DefaultClientConfigImpl.DEFAULT_MAX_AUTO_RETRIES_NEXT_SERVER);
            maxRetrySameServer = clientConfig.get(IClientConfigKey.Keys.MaxAutoRetries, DefaultClientConfigImpl.DEFAULT_MAX_AUTO_RETRIES);
        }
        int readTimeout = getProperty(IClientConfigKey.Keys.ReadTimeout, null, DefaultClientConfigImpl.DEFAULT_READ_TIMEOUT);
        int connectTimeout = getProperty(IClientConfigKey.Keys.ConnectTimeout, null, DefaultClientConfigImpl.DEFAULT_CONNECT_TIMEOUT);
        return (maxRetryNextServer + 1) * (maxRetrySameServer + 1) * (readTimeout + connectTimeout);
    }
Decorator for RxClient which adds load balancing functionality.  This implementation uses
an ILoadBlanacer and caches the mapping from Server to a client implementation

@author elandau

@param <I>   Client input type
@param <O>   Client output type
@param <T>   Specific RxClient derived type
ribbon-transport/src/main/java/com/netflix/ribbon/transport/netty/LoadBalancingRxClient.java