Ist es in .NET möglich, mithilfe von C # ein ereignisbasiertes asynchrones Muster ohne Multithreading zu erzielen?

Ich bin erstaunt über die architektonische Gestaltung von Node.js und habe mich gefragt, ob C # ein solches Design unterstützt:

Asynchron, ereignisbasiert / Ereignisschleife, nicht blockierend I / O ohne Multithreading.