code: public TransactionalProtocolClient.PreparedOperation<T> retrievePreparedOperation(final long timeout, final TimeUnit timeUnit) throws InterruptedException {
          return queue.poll(timeout, timeUnit);
      }
docs: Retrieves and removes the head of this queue, waiting up to the specified wait time if necessary for an element to become available.
  
  @param timeout the timeout
  @param timeUnit the time unit
  @return the prepared operation
  @throws InterruptedException