connection: add connect() as syntactic sugar
connection: also route errors in connect's callback

While there, make sure we use distinct error codes for unhandled
exceptions in different callbacks.