But there's a trap here. You *can* get `io.EOF` with `n > 0`.