code: @Override
    public <T> OperationFuture<Boolean> touch(final String key, final int exp,
        final Transcoder<T> tc) {
      final CountDownLatch latch = new CountDownLatch(1);
      final OperationFuture<Boolean> rv =
        new OperationFuture<Boolean>(key, latch, operationTimeout,
        executorService);
  
      Operation op = opFact.touch(key, exp, new OperationCallback() {
        @Override
        public void receivedStatus(OperationStatus status) {
          rv.set(status.isSuccess(), status);
        }
  
        @Override
        public void complete() {
          latch.countDown();
          rv.signalComplete();
        }
      });
      rv.setOperation(op);
      mconn.enqueueOperation(key, op);
      return rv;
    }
docs: Touch the given key to reset its expiration time.
  
  @param key the key to fetch
  @param exp the new expiration to set for the given key
  @param tc the transcoder to serialize and unserialize value
  @return a future that will hold the return value of whether or not the
  fetch succeeded
  @throws IllegalStateException in the rare circumstance where queue is too
  full to accept any more requests