When called twice in a row, connectAsync attempted to destruct the previous mThread, effectively joining it. This was a problem when the connection was timing out as that blocked the main loop for 20s.
(It's more of a "longlock" than a deadlock, if that were a thing)