Returns a generator containing the results of the next query in the pipeline

def pull(self):
        """Returns a generator containing the results of the next query in the pipeline"""
        # n.b. pull is now somewhat misleadingly named because it doesn't do anything
        # the connection isn't touched until you try and iterate the generator we return
        lock_acquired = self._pull_lock.acquire(blocking=False)
        if not lock_acquired:
            raise PullOrderException()
        return self._results_generator()