This is weird. Perhaps instead of the API you have currently, this should only take a byteCount and require the caller to call `skip()` ?