асинхронщина в nim построена на макросе, который фактически генерирует итератор, где каждый await превращается в yield, и функцию которая по этому итератору итерирует. если хочется самому обрабатывать это всё - надо копипастить и разбираться как оно работает.