Again, not sure why todo an special handling when there is a :timeout, since after that, there isn't special management, I guess you can just return nil (or false) with any error, and return true if the connection is stablished successfully. So callers can easily handle if establish_connect was successful or not.