Executes a started pipeline by pulling results from it's output 
        ``Pipers``. Processing nodes i.e. ``Pipers`` with the ``track`` 
        attribute set ``True`` will have their returned results stored within 
        the ``Dagger.stats['pipers_tracked']`` dictionary. A running pipeline 
        can be paused.

def run(self):
        """
        Executes a started pipeline by pulling results from it's output 
        ``Pipers``. Processing nodes i.e. ``Pipers`` with the ``track`` 
        attribute set ``True`` will have their returned results stored within 
        the ``Dagger.stats['pipers_tracked']`` dictionary. A running pipeline 
        can be paused.
        
        """
        # remove non-block results for end tasks
        if self._started.isSet() and \
           not self._running.isSet() and \
           not self._pausing.isSet() and \
           not self._finished.isSet():
            stride = 1 # FIXME
            tasks = self.get_outputs()
            wtasks = _Weave(tasks, repeats=stride)
            self._plunger = Thread(target=self._plunge, args=(wtasks, \
                            self._pausing.isSet, self._finish))
            self._plunger.deamon = True
            self._plunger.start()
            self._running.set()
        else:
            raise PlumberError