honor the iterator.next() contract for exceptions