async functions always finish on a background thread - C#