Winforms llamada al método asíncrono cuelga el programa

He estado trabajando en este problema por un tiempo, pero ahora realmente me gustaría entender qué sale mal. Tengo una aplicación bastante simple (es un complemento SVN de tortuga para youtrack, pero puedo reproducir el problema con una aplicación trivial de winforms).

Tengo un método asincrónicoResolveIssue

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

    return true;
}

Todo lo que tengo que hacer para crear un punto muerto es llamar a este método asíncrono en unButton controlador de eventos y llamarTask.Wait oTask.Result, Me gusta esto

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

Ahora entiendo que es bastante extraño tener un método asíncrono y esperarlo activamente, pero ¿por qué generaría un punto muerto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta