Execute event.

    Merge webhooks run set to do some stats after all
    of the webhooks been responded successfully.

    +---------+
    |webhook-1+--------------------+
    +---------+                    |
                                   |
    +---------+                    |
    |webhook-2+-------------+      |
    +---------+             +------+-----+
                            |merge runset+------>
    +---------+             +------+-----+
    |webhook-3+-------------+      |
    +---------+                    |
                                   |
    +---------+                    |
    |...      +--------------------+
    +---------+


    Error webhook will be propagated. Note that other webhook
    calls will still execute.

def exec_event(event, webhooks, payload):
    """Execute event.

    Merge webhooks run set to do some stats after all
    of the webhooks been responded successfully.

    +---------+
    |webhook-1+--------------------+
    +---------+                    |
                                   |
    +---------+                    |
    |webhook-2+-------------+      |
    +---------+             +------+-----+
                            |merge runset+------>
    +---------+             +------+-----+
    |webhook-3+-------------+      |
    +---------+                    |
                                   |
    +---------+                    |
    |...      +--------------------+
    +---------+


    Error webhook will be propagated. Note that other webhook
    calls will still execute.
    """
    calls = (
        call_webhook.s(event, webhook, payload)
        for webhook in webhooks
    )
    callback = merge_webhooks_runset.s()

    call_promise = chord(calls)
    promise = call_promise(callback)
    return promise