code: public final void addOp(Operation op) {
      try {
        if (!authLatch.await(authWaitTime, TimeUnit.MILLISECONDS)) {
          FailureMode mode = connectionFactory.getFailureMode();
          if (mode == FailureMode.Redistribute || mode == FailureMode.Retry) {
            getLogger().debug("Redistributing Operation " + op + " because auth "
              + "latch taken longer than " + authWaitTime + " milliseconds to "
              + "complete on node " + getSocketAddress());
            connection.retryOperation(op);
          } else {
            op.cancel();
            getLogger().warn("Operation canceled because authentication "
              + "or reconnection and authentication has "
              + "taken more than " + authWaitTime + " milliseconds to "
              + "complete on node " + this);
            getLogger().debug("Canceled operation %s", op.toString());
          }
          return;
        }
        if (!inputQueue.offer(op, opQueueMaxBlockTime, TimeUnit.MILLISECONDS)) {
          throw new IllegalStateException("Timed out waiting to add " + op
              + "(max wait=" + opQueueMaxBlockTime + "ms)");
        }
      } catch (InterruptedException e) {
        // Restore the interrupted status
        Thread.currentThread().interrupt();
        throw new IllegalStateException("Interrupted while waiting to add " + op);
      }
    }
docs: /*
  (non-Javadoc)
  
  @see net.spy.memcached.MemcachedNode#addOp(net.spy.memcached.ops.Operation)