using System.Threading.Tasks;
public static void Main()
Console.WriteLine("Starting");
Console.WriteLine("Finishing");
public static Task FooSafeAsync()
Console.WriteLine("Caught: " + ex.Message);
return Task.CompletedTask;
public static async Task FooTrullySafeAsync()
Console.WriteLine("Caught: " + ex.Message);
public static async Task FooAsync()
throw new Exception("After awaiting");