read_packed (and async) uses len / size for fixed-size element arrays. If len % size != 0, leftover bytes are silently ignored, which can desync the outer reader.
Suggested fix: if len % size != 0, raise a decode error or treat it as malformed input.
Refs: lib/reader.mbt, lib/async_reader.mbt.