def connection_made(self, transport):
        """
        (asyncio.Protocol member)

        Called upon when there is a new socket connection.
        This creates a new responder (as determined by the member
        'responder_type') and stores in a list.
        Incoming data from this connection will always call on_data
        to the last element of this list.

        Args:
            transport (asyncio.Transport): The Transport handling the
                socket communication
        """
        self.transport = transport
        self.responders = [self.make_responder(self)]

        try:
            good_func = callable(self.responders[0].on_data)
        except AttributeError:
            good_func = False

        if not good_func:
            err_str = "Provided responder MUST implement an 'on_data' method"
            raise TypeError(err_str)

        log_info = (id(self), self.remote_hostname, self.remote_port)
        log.info("{:d} connection from {}:{}", *log_info)