code: public void setProcedureCallTimeout(long ms) {
          assert(ms >= 0);
          if (ms < 0) ms = 0;
          // 0 implies infinite, but use LONG_MAX to reduce branches to test
          if (ms == 0) ms = Long.MAX_VALUE;
          m_procedureCallTimeoutNanos = TimeUnit.MILLISECONDS.toNanos(ms);
      }
docs: <p>Set the timeout for procedure call. If the timeout expires before the call returns,
  the procedure callback will be called with status {@link ClientResponse#CONNECTION_TIMEOUT}.
  Synchronous procedures will throw an exception. If a response comes back after the
  expiration has triggered, then a callback method
  {@link ClientStatusListenerExt#lateProcedureResponse(ClientResponse, String, int)}
  will be called.</p>
  
  <p>Default value is 2 minutes if not set. Value of 0 means forever.</p>
  
  <p>Note that while specified in MS, this timeout is only accurate to within a second or so.</p>
  
  @param ms Timeout value in milliseconds.