It seems kinda weird to me that `InterruptibleIterator` is actually implementing `hasNext`, which then you override here.  Maybe it should have a method `exceptionIfThreadInterrupted`.  It seems like the trait is not actually implementing `hasNext` at all, its just supplying a utility methods for implementations.