code: func (l *lexer) peek() (rune, Error) {
  	// read the next rune
  	_r, _err := l.read()
  	if _err != nil {
  		return _r, _err
  	}
  
  	// unread & return the rune
  	l.unread(_r)
  	return _r, _err
  }
docs: // peek returns the next rune in the stream without consuming it (i.e. it will
  // be returned by the next call to read or peek). peek will return an error if
  // there is a problem reading from the stream.