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