All the exceptions should be thrown in `MoveNextAsync`. The current behavior is surprising to say the least.