Promessa equivalente em C #

No Scala, há uma classe Promise que pode ser usada para concluir um futuro manualmente. Estou procurando uma alternativa em c #.

Estou escrevendo um teste e quero que seja parecido com este:

// var MyResult has a field `Header`
var promise = new Promise<MyResult>;

handlerMyEventsWithHandler( msg =>
    promise.Complete(msg);
);

// Wait for 2 seconds
var myResult = promise.Future.Await(2000);

Assert.Equals("my header", myResult.Header);

Entendo que esse provavelmente não é o padrão certo para C #, mas não consegui descobrir uma maneira razoável de conseguir a mesma coisa, mesmo com um padrão um pouco diferente.

EDIT: observe queasync/await não ajuda aqui, pois não tenho uma tarefa a aguardar! Eu só tenho acesso a um manipulador que será executado em outro thread.

questionAnswers(5)

yourAnswerToTheQuestion