code: public <T> CompletionStage<Map<String, Object>> run(final String username, final String password,
              final AuthModule eauth, final String client, final Target<T> target,
              final String function, List<Object> args, Map<String, Object> kwargs) {
          Map<String, Object> props = new HashMap<>();
          props.put("username", username);
          props.put("password", password);
          props.put("eauth", eauth.getValue());
          props.put("client", client);
          props.putAll(target.getProps());
          props.put("fun", function);
          props.put("arg", args);
          props.put("kwarg", kwargs);
  
          List<Map<String, Object>> list =  Collections.singletonList(props);
  
          String payload = gson.toJson(list);
  
          CompletionStage<Map<String, Object>> result = asyncHttpClient
                  .post(uri.resolve("run"), payload, JsonParser.RUN_RESULTS)
                  .thenApply(s -> s.getResult().get(0));
          return result;
      }
docs: Generic interface to start any execution command bypassing normal session handling.
  <p>
  {@code POST /run}
  
  @param <T> type of the tgt property for this command
  @param username the username
  @param password the password
  @param eauth the eauth type
  @param client the client
  @param target the target
  @param function the function to execute
  @param args list of non-keyword arguments
  @param kwargs map containing keyword arguments
  @return Map key: minion id, value: command result from that minion