handshake(blocking-client or async-client) and handshake
Perform a handshake with the server on the other side of transport, with authenticate being used if authentication
turns out to be required. extra_parameters are the parameters (name, optional value) to add to the handshake,
each time it is performed in case authentication is required.
progress is used to inform about what’s currently happening.