when-connected

call an async method with configurable timeout and when connected if reconnect is used

when-onnected

perform a callback when "connected" or fire callback with timeout error if its taken too long.