Make sure only one thread reconnects.
Catch exceptions and reconnect in 'send'.
Reconect after exception in keepAliveLoop.
Empty the handle MVar before retrying in reconnect.