code: public Observable<RestApiResponse> execute() {
          return deferAndWatch(new Func1<Subscriber, Observable<? extends RestApiResponse>>() {
              @Override
              public Observable<? extends RestApiResponse> call(Subscriber subscriber) {
                  RestApiRequest apiRequest = asRequest();
                  LOGGER.debug("Executing Cluster API request {} on {}", apiRequest.method(), apiRequest.pathWithParameters());
                  apiRequest.subscriber(subscriber);
                  return core.send(apiRequest);
              }
          });
      }
docs: Executes the API request in an asynchronous fashion.
  
  The return type is an {@link Observable} that will only emit the result of executing the request.
  It is a cold Observable (and the request is only sent when it is subscribed to).
  
  @return an {@link Observable} of the result of the API call, which is a {@link RestApiResponse}.