If you need Peek, than implement your own bufio.Reader with some leaky channel implementation of a buffer pool.
It works well, but I'm using bufio to provide rune reading functionality for the match reader. As I'm trying to minimise memory allocations, bufio seems overkill. Although there are byte slice to rune readers provided, there doesn't seem to be a straight byte reader to rune reader. Is a buffer required to convert bytes to runes? Have I completely missed what I am looking for?