История изменений
      
        Исправление
      rtxtxtrx,
      
        (текущая версия)
      :
    
В питоне все не так работает.
async def fetch(session, url):
   response = await session.get(url)
   ...
...
asyncio.gather([fetch(session, url) for url urls])
Там примерно так должно работать:
while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      меняем контекст
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст
Те ничего в принципе сломаться не может.
Там основной цикл есть для проверки состояни, скрытый за asyncio.run()
      
        Исправление
      rtxtxtrx,
      :
    
В питоне все не так работает.
async def fetch(session, url):
   response = await session.get(url)
   ...
...
asyncio.gather([fetch(session, url) for url urls])
Там примерно так должно работать:
while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст
Те ничего в принципе сломаться не может.
Там основной цикл есть для проверки состояни, скрытый за asyncio.run()
      
        Исходная версия
      rtxtxtrx,
      :
    
В питоне все не так работает.
async def fetch(session, url):
   response = await session.get(url)
   ...
...
asyncio.gather([fetch(session, url) for url urls])
Там примерно так должно работать:
while True:
  если мы ранее переключили контекст (state проверяем)
    если сокет готов для чтения
      читаем из него данные и меняем state на первоначальный
    иначе
      continue
  выполняем контекст пока не встретим await
  затем меняем state и переключаем контекст