code: public T executeWithLoadBalancer(final S request, final IClientConfig requestConfig) throws ClientException {
          LoadBalancerCommand<T> command = buildLoadBalancerCommand(request, requestConfig);
  
          try {
              return command.submit(
                  new ServerOperation<T>() {
                      @Override
                      public Observable<T> call(Server server) {
                          URI finalUri = reconstructURIWithServer(server, request.getUri());
                          S requestForServer = (S) request.replaceUri(finalUri);
                          try {
                              return Observable.just(AbstractLoadBalancerAwareClient.this.execute(requestForServer, requestConfig));
                          } 
                          catch (Exception e) {
                              return Observable.error(e);
                          }
                      }
                  })
                  .toBlocking()
                  .single();
          } catch (Exception e) {
              Throwable t = e.getCause();
              if (t instanceof ClientException) {
                  throw (ClientException) t;
              } else {
                  throw new ClientException(e);
              }
          }
          
      }
docs: This method should be used when the caller wants to dispatch the request to a server chosen by
  the load balancer, instead of specifying the server in the request's URI.
  It calculates the final URI by calling {@link #reconstructURIWithServer(com.netflix.loadbalancer.Server, java.net.URI)}
  and then calls {@link #executeWithLoadBalancer(ClientRequest, com.netflix.client.config.IClientConfig)}.
  
  @param request request to be dispatched to a server chosen by the load balancer. The URI can be a partial
  URI which does not contain the host name or the protocol.