public ClientRequest replaceUri(URI newURI) {
        ClientRequest req;
        try {
            req = (ClientRequest) this.clone();
        } catch (CloneNotSupportedException e) {
            req = new ClientRequest(this);
        }
        req.uri = newURI;
        return req;
    }
Create a client request using a new URI. This is used by {@code com.netflix.client.AbstractLoadBalancerAwareClient#computeFinalUriWithLoadBalancer(ClientRequest)}.
It first tries to clone the request and if that fails it will use the copy constructor {@link #ClientRequest(ClientRequest)}.
Sub classes are recommended to override this method to provide more efficient implementation.

@param newURI
ribbon-core/src/main/java/com/netflix/client/ClientRequest.java