code: def _wrapped_call(wrap_controller, func):
      
      try:
          next(wrap_controller)  # first yield
      except StopIteration:
          _raise_wrapfail(wrap_controller, "did not yield")
      call_outcome = _Result.from_call(func)
      try:
          wrap_controller.send(call_outcome)
          _raise_wrapfail(wrap_controller, "has second yield")
      except StopIteration:
          pass
      return call_outcome.get_result()
docs: Wrap calling to a function with a generator which needs to yield
      exactly once.  The yield point will trigger calling the wrapped function
      and return its ``_Result`` to the yield point.  The generator then needs
      to finish (raise StopIteration) in order for the wrapped call to complete.