code: async def chain(*sources):
      
      for source in sources:
          async with streamcontext(source) as streamer:
              async for item in streamer:
                  yield item
docs: Chain asynchronous sequences together, in the order they are given.
  
      Note: the sequences are not iterated until it is required,
      so if the operation is interrupted, the remaining sequences
      will be left untouched.