One disadvantage of what you're proposing is this..

You want to merge the QueryIterator and QueryResult into one. This has the consequence that you cannot have two iterators running over the same QueryResult simultaneously. It's an incorrect assumption that such a situation will never happen.