Assíncrona e Aguardar com HttpWebRequest.GetResponseAsync

Estou tentando usar o Async e o Await ao fazer uma solicitação da web e estou descobrindo que ela nunca passa da linha de espera. Eu estou fazendo isso a partir de um aplicativo Metro, mas também verifiquei o problema em um aplicativo winforms.

public async Task<string> DoSomething()
{
    string url = "http://imgur.com/gallery/VcBfl.json";
    HttpWebRequest request = HttpWebRequest.CreateHttp(url);

    var ws = await request.GetResponseAsync();

    return ws.ResponseUri.ToString(); ;
}

Se eu não usar o aguardar e, em vez disso, executar uma espera síncrona, isso funcionará, mas eu preciso que isso seja executado de forma assíncrona.

O que estou faltando neste código que está causando o aguardo para nunca mais voltar?

questionAnswers(1)

yourAnswerToTheQuestion