Fixes on top of 0.1.6:
- protocol: fix
AttributeError: 'NoneType' object has no attribute 'readexactly'crash —_read_raw/_drain_garbage_bytesnow bind the StreamReader locally so a concurrentdisconnect()can't null it mid-read. - protocol: treat
ConnectionResetErrorlikeIncompleteReadErrorand downgrade the expected idle-disconnect log from ERROR to DEBUG (reconnect is still logged by the coordinator/retry layer). - discovery: recognize product key
04D30Q34(newer MDP-20000 hardware revision) as an MDP-20000 instead of warning "Unknown product key".