Проблема с чисто интуитивным кодированием в том, что нет состояния потока, по определению вам нужно многозадачить, потому что вы всегда ждете, прерываясь между микро-задачами.