Is there ever a time when someone could call `next()` in a loop without `hasNext()` 

I don't think it's illegal for someone to do that until it throws a `NoSuchElementException` thus we need to do the same blocking logic here in case someone doesn't use `hasNext()`

http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html#next()