code: def chain(self, other_task):
          
          other_task._source = self
          self._listeners.append(ChainListener(other_task))
          return other_task
docs: Add a chain listener to the execution of this task. Whenever
          an item has been processed by the task, the registered listener
          task will be queued to be executed with the output of this task.
  
          Can also be written as::
  
              pipeline = task1 > task2