send a signal from the sender to all connected receivers

async def send(self, sender, **kwargs):
        ''' send a signal from the sender to all connected receivers '''
        if not self.receivers:
            return []
        responses = []
        futures = []
        for receiver in self._get_receivers(sender):
            method = receiver()
            if callable(method):
                futures.append(method(sender=sender, **kwargs))
        if len(futures) > 0:
            responses = await asyncio.gather(*futures)
        return responses