Testando exceções em métodos assíncronos

Estou um pouco preso com este código (este é um exemplo):

public async Task Fail()
{
    await Task.Run(() => { throw new Exception(); });
}

[Test]
public async Task TestFail()
{
    Action a = async () => { await Fail(); };
    a.ShouldThrow<Exception>();
}

O código não captura a exceção e falha com

Esperava que um System.Exception fosse lançado, mas nenhuma exceção foi lançada.

Tenho certeza de que estou perdendo alguma coisa, mas os documentos parecem sugerir que esse é o caminho a seguir. Alguma ajuda seria apreciada.

questionAnswers(2)

yourAnswerToTheQuestion