Emits a single signal to call callbacks registered to respond to that signal.
    Optionally accepts args and kwargs that are passed directly to callbacks.

    :param signal: Signal to send

def _emit_twisted(signal, *args, **kwargs):
    """
    Emits a single signal to call callbacks registered to respond to that signal.
    Optionally accepts args and kwargs that are passed directly to callbacks.

    :param signal: Signal to send
    """
    errback = kwargs.pop('errback', lambda f: f)

    dl = []
    for callback in set(receivers[signal]):  # Make a copy in case of any ninja signals
        d = _call(callback, args=args, kwargs=kwargs)
        if d is not None:
            dl.append(d.addErrback(errback))

    def simplify(results):
        return [x[1] for x in results]

    from twisted.internet.defer import DeferredList
    return DeferredList(dl).addCallback(simplify)