Chamada WinForms para método assíncrono desliga programa

Estou trabalhando com esse problema há algum tempo, mas agora eu realmente gostaria de entender o que está errado. Eu tenho um aplicativo bastante simples (é um plug-in SVN turtoise para o youtrack, mas posso reproduzir o problema com um aplicativo trivial do winforms).

Eu tenho um método assíncronoResolveIssue

public async Task<bool> ResolveIssue(Issue issue, int revision, string[] pathList)
{
    await Task.Delay(1000);

    return true;
}

Tudo o que tenho que fazer para criar um impasse é chamar esse método assíncrono em umButton manipulador de eventos e chamadaTask.Wait ouTask.Result, como isso

private void buttonOk_Click(object sender, System.EventArgs e)
{
    var asyncResolvedIssue = api.ResolveIssue(issue, revision, pathList);
    if (asyncResolvedIssue.Result) {} // <== deadlock!
}

Agora eu entendo que é bastante estranho ter um método assíncrono e esperá-lo ativamente, mas por que isso geraria um impasse ?!

questionAnswers(1)

yourAnswerToTheQuestion