docs: public boolean awaitDisconnected(long timeout, TimeUnit unit)
              throws InterruptedException {
          lock.lock();
          try {
              if (currentState.equals(CLIENT_DISCONNECTED) || currentState.equals(SHUTTING_DOWN) || currentState.equals(SHUTDOWN)) {
                  return true;
              }
  
              long duration = unit.toNanos(timeout);
              while (duration > 0) {
                  duration = disconnectedCondition.awaitNanos(duration);
  
                  if (currentState.equals(CLIENT_DISCONNECTED) || currentState.equals(SHUTTING_DOWN) || currentState
                          .equals(SHUTDOWN)) {
                      return true;
                  }
              }
  
              return false;
          } finally {
              lock.unlock();
          }
      }