'Sends a leave event to one of a list of homeservers.
Doing so will cause the remote server to add the event to the graph,
and send the event out to the rest of the federation.
This is mostly useful to reject received invites.
Args:
destinations (str): Candidate homeservers which are probably
participating in the room.
pdu (BaseEvent): event to be sent
Return:
Deferred: resolves to None.
Fails with a ``CodeMessageException`` if the chosen remote server
returns a non-200 code.
Fails with a ``RuntimeError`` if no servers were reachable.'

@defer.inlineCallbacks
def send_leave(self, destinations, pdu):

    for destination in destinations:
        if (destination == self.server_name):
            continue
        try:
            time_now = self._clock.time_msec()
            (_, content) = (yield self.transport_layer.send_leave(destination=destination, room_id=pdu.room_id, event_id=pdu.event_id, content=pdu.get_pdu_json(time_now)))
            logger.debug('Got    content:    %s', content)
            defer.returnValue(None)
        except CodeMessageException:
            raise
        except Exception as e:
            logger.exception('Failed    to    send_leave    via    %s:    %s', destination, e.message)
    raise RuntimeError('Failed    to    send    to    any    server.')
