def begin_connection(self, connection_id, internal_id, callback, context, timeout):
        """Asynchronously begin a connection attempt

        Args:
            connection_id (int): The external connection id
            internal_id (string): An internal identifier for the connection
            callback (callable): The function to be called when the connection
                attempt finishes
            context (dict): Additional information to associate with this context
            timeout (float): How long to allow this connection attempt to proceed
                without timing it out
        """

        data = {
            'callback': callback,
            'connection_id': connection_id,
            'internal_id': internal_id,
            'context': context
        }

        action = ConnectionAction('begin_connection', data, timeout=timeout, sync=False)
        self._actions.put(action)
Asynchronously begin a connection attempt

        Args:
            connection_id (int): The external connection id
            internal_id (string): An internal identifier for the connection
            callback (callable): The function to be called when the connection
                attempt finishes
            context (dict): Additional information to associate with this context
            timeout (float): How long to allow this connection attempt to proceed
                without timing it out