using System;
using System.Threading.Tasks;
public class Program
{
public static void Main()
try
Chain(300).Wait();
Console.WriteLine("Succeeded!");
}
catch (Exception e)
Console.WriteLine("Caught exception: {0}", e);
public async static Task Chain(int n)
Console.WriteLine("Chain({0})", n);
if (n == 0)
throw new Exception("asplode!");
await Chain(n-1);