Maybe there should be a `#peek_should_complete` that doesn't clear the flag.