Usando o Rx para simplificar uma solicitação de serviço da web assíncrona do Silverlight

Eu escrevi uma biblioteca cliente Silverlight simplificada para o meu serviço Web WCF usando o Rx, mas percebo que às vezes estou perdendo eventos concluídos.

public IObservable<XElement> GetReport(string reportName)
{
    return from client in Observable.Return(new WebServiceClient())
           from request in Observable.ToAsync<string>(client.GetReportDataAsync)(reportName)
           from result in Observable.FromEvent<GetReportDataCompletedEventArgs>(client, "GetReportDataCompleted").Take(1)
           from close in this.CloseClient(client)
           select result.EventArgs.Result;
}

Acredito que o problema seja causado pelo fato de o serviço da Web ser chamado e retornado antes da inscrição no evento concluído. Não consigo descobrir como fazer com que o Rx se inscreva no evento antes da chamada do Async. Eu tentei o StartWith, mas isso exige que os tipos de entrada e saída sejam os mesmos, alguma idéia?

questionAnswers(2)

yourAnswerToTheQuestion