Consider the following code:
Task<bool> task = SomeAsyncOperation();
// Some more code in which the task might be awaited
return task.IsCompleted && !task.IsFaulted && task.Result;
Using .Result in an async method is generally discouraged, since it may lead to a deadlock. However, since here it will only be called if the task IsCompleted, I'd say it's safe to do it. Am I right?