I think that my version naturally handles the channel being closed without having to store that information in the reader itself, along with maintaining only one positional variable (not both len and pos).