docs: public boolean deleteWithCustomTimeout(CompositeVoldemortRequest<K, V> deleteRequestObject) {
          List<Versioned<V>> versionedValues;
  
          validateTimeout(deleteRequestObject.getRoutingTimeoutInMs());
          boolean hasVersion = deleteRequestObject.getVersion() == null ? false : true;
          String keyHexString = "";
          if(!hasVersion) {
              long startTimeInMs = System.currentTimeMillis();
              if(logger.isDebugEnabled()) {
                  ByteArray key = (ByteArray) deleteRequestObject.getKey();
                  keyHexString = RestUtils.getKeyHexString(key);
                  logger.debug("DELETE without version requested for key: " + keyHexString
                               + " , for store: " + this.storeName + " at time(in ms): "
                               + startTimeInMs + " . Nested GET and DELETE requests to follow ---");
              }
              // We use the full timeout for doing the Get. In this, we're being
              // optimistic that the subsequent delete might be faster all the
              // steps might finish within the allotted time
              deleteRequestObject.setResolveConflicts(true);
              versionedValues = getWithCustomTimeout(deleteRequestObject);
              Versioned<V> versioned = getItemOrThrow(deleteRequestObject.getKey(),
                                                      null,
                                                      versionedValues);
  
              if(versioned == null) {
                  return false;
              }
  
              long timeLeft = deleteRequestObject.getRoutingTimeoutInMs()
                              - (System.currentTimeMillis() - startTimeInMs);
  
              // This should not happen unless there's a bug in the
              // getWithCustomTimeout
              if(timeLeft < 0) {
                  throw new StoreTimeoutException("DELETE request timed out");
              }
  
              // Update the version and the new timeout
              deleteRequestObject.setVersion(versioned.getVersion());
              deleteRequestObject.setRoutingTimeoutInMs(timeLeft);
  
          }
          long deleteVersionStartTimeInNs = System.currentTimeMillis();
          if(logger.isDebugEnabled()) {
              ByteArray key = (ByteArray) deleteRequestObject.getKey();
              keyHexString = RestUtils.getKeyHexString(key);
              debugLogStart("DELETE",
                            deleteRequestObject.getRequestOriginTimeInMs(),
                            deleteVersionStartTimeInNs,
                            keyHexString);
          }
          boolean result = store.delete(deleteRequestObject);
          if(logger.isDebugEnabled()) {
              debugLogEnd("DELETE",
                          deleteRequestObject.getRequestOriginTimeInMs(),
                          deleteVersionStartTimeInNs,
                          System.currentTimeMillis(),
                          keyHexString,
                          0);
          }
          if(!hasVersion && logger.isDebugEnabled()) {
              logger.debug("DELETE without version response received for key: " + keyHexString
                           + ", for store: " + this.storeName + " at time(in ms): "
                           + System.currentTimeMillis());
          }
          return result;
      }