I was thinking an intermediate step from query execution to the actual cursor.
I can imagine if a query becomes a command in the future the return value of that would be a cursor document, along with maybe some statistics such as execution time and timestamp of the last entry in the oplog so a user can decide to discard the results and try another secondary instead or whatever the future may hold.

QueryResult would implement IteratorAggregate and return a Cursor which would only be that, a iterable cursor.