in https://github.com/julz/pat/pull/37 I moved BechmarkResult (renamed to StepResult) and the Errors channel in to IterationResult so we just have one stream of results to process. Think that simplifies things a lot (at the small price of not receiving the steps until the iteration completes, which is what JMeter does also). I think that might also remove the problems with this method finishing early, because we only have one channel to wait for, and we already process all the Iteration results before returning.