code: public synchronized void attachAndEnqueueIfNotRun(@NonNull DownloadTask task,
                                                        @NonNull DownloadListener listener) {
          attachListener(task, listener);
  
          if (!isTaskPendingOrRunning(task)) {
              task.enqueue(hostListener);
          }
      }
docs: Attach the {@code listener} to this manager and enqueue the task if it isn't pending or
  running.
  
  @param task     the task will be enqueue if it isn't running.
  @param listener the listener will be attach to this manager.