code: public CompletionStage<WheelResult<Result<R>>> callSync(final SaltClient client, AuthMethod auth) {
          Type xor = parameterizedType(null, Result.class, getReturnType().getType());
          Type wheelResult = parameterizedType(null, WheelResult.class, xor);
          Type listType = parameterizedType(null, List.class, wheelResult);
          Type wrapperType = parameterizedType(null, Return.class, listType);
  
          @SuppressWarnings("unchecked")
          CompletionStage<WheelResult<Result<R>>> wheelResultCompletionStage =
                  client.call(this, Client.WHEEL, Optional.empty(), Collections.emptyMap(),
                          (TypeToken<Return<List<WheelResult<Result<R>>>>>)
                                  TypeToken.get(wrapperType), auth)
                          .thenApply(wrapper -> wrapper.getResult().get(0));
          return wheelResultCompletionStage;
      }
docs: Calls a wheel module function on the master and synchronously
  waits for the result. Authentication is done with the token therefore you
  have to login prior to using this function.
  
  @param client SaltClient instance
  @param auth authentication credentials to use
  @return the result of the called function