code: protected <JsonType extends JsonStructure, ValueType>
      ValueType invoke(String operation, RequestClosure<JsonType> requestClosure, ResponseClosure<JsonType, ValueType> responseClosure) {
          return invoke(operation, null, null, null, requestClosure, responseClosure);
      }
docs: Performs a REST API invocation. This is wrapper function for {@link #invoke(String, String, String,
  ApiTokenClient.QueryClosure, ApiTokenClient.RequestClosure,
  ApiTokenClient.ResponseClosure)}
  
  @param operation       operation name, such as <code>tests</code>, <code>data-stores</code>, etc
  @param requestClosure  closure to create the request, such as GET, POST, PUT, DELETE
  @param responseClosure closure to convert the response JSON into a value-object
  @param <JsonType>      JSON type, such as JsonObject, JsonArray
  @param <ValueType>     value-type, such as {@link com.loadimpact.resource.Test}, {@link
  com.loadimpact.resource.UserScenario}, etc
  @return a single value-object or a list of it
  @throws com.loadimpact.exception.ApiException if anything goes wrong, such as the server returns HTTP status not being 20x