def iterate_subchain(self, chain):
        """
        A coroutine used by __call__ to forward all requests to a
        subchain.
        """
        for mw in chain:
            try:
                yield mw
            except Exception as err:
                yield chain.throw(err)