code: boolean offerInternal(Data data, long timeout) {
          TxnReserveOfferOperation operation
                  = new TxnReserveOfferOperation(name, timeout, offeredQueue.size(), tx.getTxnId());
          operation.setCallerUuid(tx.getOwnerUuid());
          try {
              Future<Long> future = invoke(operation);
              Long itemId = future.get();
              if (itemId != null) {
                  if (!itemIdSet.add(itemId)) {
                      throw new TransactionException("Duplicate itemId: " + itemId);
                  }
                  offeredQueue.offer(new QueueItem(null, itemId, data));
                  TxnOfferOperation txnOfferOperation = new TxnOfferOperation(name, itemId, data);
                  putToRecord(txnOfferOperation);
                  return true;
              }
          } catch (Throwable t) {
              throw ExceptionUtil.rethrow(t);
          }
          return false;
      }
docs: Tries to accomodate one more item in the queue in addition to the
  already offered items. If it succeeds by getting an item ID, it will
  add the item to the
  Makes a reservation for a {@link TransactionalQueue#offer} operation
  and adds the commit operation to the transaction log.
  
  @param data    the serialised item being offered
  @param timeout the wait timeout in milliseconds for the offer reservation
  @return {@code true} if the item reservation was made
  @see TxnReserveOfferOperation
  @see TxnOfferOperation