Начинаем новый модуль - блокировки и синхронизация. Первый честный вопрос, который стоит задать: если в asyncio всего один поток, а переключение между корутинами происходит только в явных точках await, зачем там вообще могут понадобиться блокировки? Разве не гарантировано, что между await не может влезть другой код?