This seems out of place. Surely you should initiate the handshake/etc in `_connect()`?