Какой паттерн в asyncio позволяет реализовать 'сопрограммы как потоки'? Какие преимущества и ограничения у этого подхода по сравнению с threading?