async def register(self, channel, event, callback):
        """Register a callback to ``channel_name`` and ``event``.

        A prefix will be added to the channel name if not already available or
        the prefix is an empty string

        :param channel: channel name
        :param event: event name
        :param callback: callback to execute when event on channel occurs
        :return: a coroutine which results in the channel where the callback
            was registered
        """
        channel = self.channel(channel)
        event = channel.register(event, callback)
        await channel.connect(event.name)
        return channel
Register a callback to ``channel_name`` and ``event``.

        A prefix will be added to the channel name if not already available or
        the prefix is an empty string

        :param channel: channel name
        :param event: event name
        :param callback: callback to execute when event on channel occurs
        :return: a coroutine which results in the channel where the callback
            was registered