https://medium.com/@orestis.meikopoulos/asynchronous-programming-with-async-and-await-in-c-part-1-11b0581a80f9