make Stream respect iterator api

Noticed when a stream is exhausted, `next` does not throw a `NoSuchElementException`