https://medium.com/philips-technology-blog/asynchronous-programming-using-async-await-in-c-8ac7097a5f0a