Como "aguardar" a criação de um evento EventHandler

Às vezes, o padrão de evento é usado para gerar eventos nos aplicativos MVVM por meio de um viewmodel filho para enviar uma mensagem ao seu viewmodel pai de maneira fracamente acoplada como esta.

Parent ViewModel

searchWidgetViewModel.SearchRequest += (s,e) => 
{
    SearchOrders(searchWidgitViewModel.SearchCriteria);
};

SearchWidget ViewModel

public event EventHandler SearchRequest;

SearchCommand = new RelayCommand(() => {

    IsSearching = true;
    if (SearchRequest != null) 
    {
        SearchRequest(this, EventArgs.Empty);
    }
    IsSearching = false;
});

Ao refatorar minha aplicação para .NET4.5, estou fazendo o máximo possível de código para usarasync eawait. No entanto o seguinte não funciona (bem, eu realmente não estava esperando isso)

 await SearchRequest(this, EventArgs.Empty);

O framework definitivamente faz isso para chamar manipuladores de eventostal como este, mas não tenho certeza de como isso acontece?

private async void button1_Click(object sender, RoutedEventArgs e)
{
   textBlock1.Text = "Click Started";
   await DoWork();
   textBlock2.Text = "Click Finished";
}

Qualquer coisa que eu encontrei sobre o assunto de levantar eventos de forma assíncronaé antigo mas não consigo encontrar algo no framework para suportar isso.

Como possoawait a chamada de um evento, mas permanecem no thread da interface do usuário.