v0.1.6
Fix unsolicited type 0x00 message draining
The pump emits periodic type 0x00 status broadcasts. If one arrived in the 10ms drain window before a request, _drain_garbage_bytes consumed the 5-byte header + length bytes but left the trailing 129-byte padding frame in the socket buffer. The next _read_raw then saw padding bytes instead of a valid header, triggered byte-by-byte resync, and raced the pump's connection close — surfacing as IncompleteReadError on every poll.
Drain now reads the full frame (header + body + 129-byte padding for type 0x00) via readexactly.