docs: @Override
      public boolean connect(InetSocketAddress address) {
          nioThread = new NIOThread(address);
          nioThread.start();
  
          isConnecting = true;
          long timeToSleep = this.connectTimeOut;
          if(LOGGER.isTraceEnabled()){
              LOGGER.trace("NIO connect go to sleep - " + timeToSleep);
          }
          while(isConnecting && timeToSleep > 0){
              long now = System.currentTimeMillis();
  
              try {
                  synchronized(connectHolder){
                      connectHolder.wait(timeToSleep);
                  }
              } catch (InterruptedException e) {
                  // do nothing.
              }
              timeToSleep = timeToSleep - (System.currentTimeMillis() - now);
              if(LOGGER.isTraceEnabled()){
                  LOGGER.trace("NIO connect go to sleep - " + timeToSleep + ", isConnecting=" + isConnecting);
              }
          }
  
  
  
          if(! isConnected()){
              onConnectFailed();
              return false;
          }else{
              lenBuffer.clear();
              incomingBuffer = lenBuffer;
              return true;
          }
  
      }