docs: public boolean callProcedureWithClientTimeout(
              ProcedureCallback callback,
              int batchTimeout,
              boolean allPartition,
              String procName,
              long clientTimeout,
              TimeUnit clientTimeoutUnit,
              Object... parameters)
                      throws IOException, NoConnectionsException
      {
          if (callback instanceof ProcedureArgumentCacher) {
              ((ProcedureArgumentCacher) callback).setArgs(parameters);
          }
  
          long handle = m_handle.getAndIncrement();
          ProcedureInvocation invocation
                  = new ProcedureInvocation(handle, batchTimeout, allPartition, procName, parameters);
  
          if (m_isShutdown) {
              return false;
          }
  
          if (callback == null) {
              callback = NULL_CALLBACK;
          }
  
          return internalAsyncCallProcedure(callback, clientTimeoutUnit.toNanos(clientTimeout), invocation);
      }