code: public static Future<?> publishProgress(
              final ProgressListener listener,
              final ProgressEventType type) {
          if (listener == ProgressListener.NOOP || listener == null
          ||  type == null) {
              return null;
          }
          return deliverEvent(listener, new ProgressEvent(type));
      }
docs: Used to deliver a progress event to the given listener.
  
  @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.