@classmethod
def _load(cls, request_sources):
    """
        Load the requests and any associated responses from relation data.

        Must be called prior to requests being accessed.  This is done
        automatically by :class:`RequesterEndpoint` and
        :class:`ResponderEndpoint` base classes.

        :param request_sources: Where the requests should be loaded from.
          For example, the Endpoint initiating requests would use
          ``self.relations`` while the Endpoint processing requests might use
          ``self.all_joined_units``.
        """
    cls._cache = {}
    for source in request_sources:
        requests = source.to_publish if hasattr(source, 'to_publish'
            ) else source.received
        for key, request_data in requests.items():
            if not key.startswith('request_'):
                continue
            request = cls(source, request_data['request_id'])
            request.response = cls.RESPONSE_CLASS._load(request)
            cls._cache[request.request_id] = request
