Reconnect once

When a connection has an error only report this to the cluster once, correctly handle closing connections and add some defensive measures around closed connections.