// an error is thrown if you try and advance beyond the end of the stream
assert.throws(function () {
stream.advance();
});
```
## API
### stream.peek()
Gets and returns the next item in the stream without advancing the stream's position.
### stream.advance()
Returns the next item in the stream and advances the stream by one item.
### stream.defer(token)
Put a token on the start of the stream (useful if you need to back track after calling advance).
### stream.lookahead(index)
Return the item at `index` position from the start of the stream, but don't advance the stream. `stream.lookahead(0)` is equivalent to `stream.peek()`.