I think this is just a bug, i don't think we can/want to guarantee that its forced to materialize downstream. I've added a toList to force it at the end of the function. (Keeping the toIterator here so we don't materialize the intermediate list)