You are correct, the design of the library is intentionally asynchronous.
The only consideration of blocking is in the network socket interface itself, i.e. does the call to connect() block. This is blocking at the socket level not the protocol level.
You are correct, the design of the library is intentionally asynchronous.
The only consideration of blocking is in the network socket interface itself, i.e. does the call to connect() block. This is blocking at the socket level not the protocol level.