'Requests some more historic PDUs for the given context from the
given destination server.
Args:
dest (str): The remote home server to ask.
context (str): The context to backfill.
limit (int): The maximum number of PDUs to return.
extremities (list): List of PDU id and origins of the first pdus
we have seen from the context
Returns:
Deferred: Results in the received PDUs.'

@defer.inlineCallbacks
@log_function
def backfill(self, dest, context, limit, extremities):

    logger.debug('backfill    extrem=%s', extremities)
    if (not extremities):
        return
    transaction_data = (yield self.transport_layer.backfill(dest, context, extremities, limit))
    logger.debug('backfill    transaction_data=%s', repr(transaction_data))
    pdus = [self.event_from_pdu_json(p, outlier=False) for p in transaction_data['pdus']]
    pdus[:] = (yield preserve_context_over_deferred(defer.gatherResults(self._check_sigs_and_hashes(pdus), consumeErrors=True)).addErrback(unwrapFirstError))
    defer.returnValue(pdus)
