Hello, I'm looking to use something like the `byteReader` approach for one of my projects, and looking at it a bit more closely, I see that the `json` package considers a call of `byteReader.extend` that returns `0` as `EOF` (see [the call in `Scanner.Next`](https://github.com/pkg/json/blob/703c45db51c163084780e46b692940ef9fd8bf58/scanner.go#L101-L105), for example). The documentation of `Scanner.Next` mentions that "If the stream is at its end, or an error has occurred, Next returns a zero length []byte slice." However, it is possible that the underlying `io.Reader` returns `0, nil` as a call to `Read`, which indicates that no data is available but no error was encountered, in which case a number of retries should probably happen in `byteReader.extend`? I'm thinking something like [what is done in `bufio.Reader.fill`](https://cs.opensource.google/go/go/+/refs/tags/go1.21.4:src/bufio/bufio.go;l=111-126). It's possible that I'm missing something and the `io.Reader` in `byteReader` is always expected to be of a certain type that guarantees no empty reads (without error) or something like that. Thanks, Martin