code: public static Future<?> publishTransferPersistable(
              final ProgressListener listener,
              final PersistableTransfer persistableTransfer) {
          if (persistableTransfer == null || !(listener instanceof S3ProgressListener)) {
              return null;
          }
          final S3ProgressListener s3listener = (S3ProgressListener)listener;
          return deliverEvent(s3listener, persistableTransfer);
      }
docs: Used to deliver a persistable transfer to the given s3 listener.
  
  @param listener only listener of type {@link S3ProgressListener} will be
  notified.
  
  @return the future of a submitted task; or null if the delivery is
  synchronous with no future task involved.  Note a listener should never
  block, and therefore returning null is the typical case.