Safely getting a result from a async method within a sync method - C#