Pauses a running pipeline. This will stop retrieving results from the 
        pipeline. Parallel parts of the pipeline will stop after the ``NuMap`` 
        buffer is has been filled. A paused pipeline can be run or stopped.

def pause(self):
        """
        Pauses a running pipeline. This will stop retrieving results from the 
        pipeline. Parallel parts of the pipeline will stop after the ``NuMap`` 
        buffer is has been filled. A paused pipeline can be run or stopped. 
        
        """
        # 1. stop the plumbing thread by raising a StopIteration on a stride 
        #    boundary
        if self._started.isSet() and \
           self._running.isSet() and \
           not self._pausing.isSet():
            self._pausing.set()
            self._plunger.join()
            del self._plunger
            self._pausing.clear()
            self._running.clear()
        else:
            raise PlumberError