code: async def traverse(self, func):
          
  
          # this allows the reference to be stolen
          async_executor = self
  
          if inspect.isasyncgenfunction(func):
              async for result in func(*async_executor.args):
                  yield result
          else:
              yield await func(*async_executor.args)
docs: Traverses an async function or generator, yielding each result.
  
          This function is private. The class should be used as an iterator instead of using this method.