text: # test waiting within async with enter/exit functions
  
  # uPy allows normal generators to be awaitables.
  # CircuitPython does not.
  # In CircuitPython you need to have an __await__ method on an awaitable like in CPython;
  #  and like in CPython, generators do not have __await__.
  
  class Awaitable:
      def __init__(self, x):
          self.x = x
  
      def __await__(self):
          print('f start:', self.x)
          yield self.x + 1
          yield self.x + 2
          return self.x + 3
  
  class AContext:
      async def __aenter__(self):
          print('enter')
          print('f returned:', await Awaitable(10))
      async def __aexit__(self, exc_type, exc, tb):
          print('exit', exc_type, exc)
          print('f returned:', await Awaitable(20))
  
  async def coro():
      async with AContext():
          print('body start')
          print('body f returned:', await Awaitable(30))
          print('body end')
  
  o = coro()
  try:
      while True:
          print('coro yielded:', o.send(None))
  except StopIteration:
      print('finished')
  