For a better usability we might consider doing two changes: - don't allow getting a socket descriptor before calling `connect` - make `connect` block This would allow `connect` to iterate over resolved host names to check which one actually has rmq running.