Check for socket errors / socket status on recv as well as send

Hey,

I ran a "kill the broker" test for producers and got into a state where the topic metadata wasn't being refreshed because client._send_broker_aware_request does a conn.recv which doesn't propagate the correct exception upon socket timeout. I believe this is the correct behaviour below.

Integration tests still pass.