But why is that OK?  The logic is not clear to me here.  Intuitively, an idempotent method like Peek() that changes the internal state seems like disaster waiting to happen.