Вот это меня и смущает, как таким образом работает многопоточный код и асинхронный в связке?
А ничего, что любая асинхронщина - это уже многопоточность? Даже, если мы говорим о гринтредах. Хотя хоть так, хоть эдак, в большинстве случаев процессоры уже бьются программно на двое.