public async Task RunWithAsyncForAPM()
{
var request = WebRequest.Create("http://www.hotmail.com") as HttpWebRequest;
request.Method = "HEAD";
Task<WebResponse> getResponseTask = Task.Factory.FromAsync<WebResponse>(
request.BeginGetResponse, request.EndGetResponse, null);
var response = (HttpWebResponse) await getResponseTask;
MessageBox.Show(String.Format("we got {0} headers", response.Headers.Count));
}