title: async ctp recursion
body: <p>I'm about 15 minutes into my first play with the <a href="http://msdn.microsoft.com/en-us/vstudio/gg316360" rel="nofollow">async CTP</a>... (nice).</p>
  
  <p>Here's a really simple server I've knocked together:</p>
  
  <pre><code>internal class Server
  {
      private HttpListener listener;
      public Server()
      {
          listener = new HttpListener();
          listener.Prefixes.Add("http://*:80/asynctest/");
          listener.Start();
          Go();
      }
  
      async void Go()
      {
          HttpListenerContext context = await listener.GetContextAsync();
          Go();
          using (var httpListenerResponse = context.Response) 
          using (var outputStream = httpListenerResponse.OutputStream) 
          using (var sw = new StreamWriter(outputStream))
          {
              await sw.WriteAsync("hello world");
          }
      }
  }
  </code></pre>
  
  <p>As can be seen, the async method <code>Go</code> calls itself. In classic non-async world, this would cause a stack overflow. I assume that this isn't the case with an async method, but I'd like to be sure, one way or the other. Anyone?</p>