https://jigneshdarji.com/asynchronously-wait-for-task-to-complete-with-timeout/
Asynchronously wait for Task to complete with timeout in C#