public Task <List <Charge> > GetChargesAsync(int expenseReportId) { TaskCompletionSource <List <Charge> > tcs = new TaskCompletionSource <List <Charge> >(); WcfExpenseService.ExpenseServiceClient client = this.CreateExpenseServiceClient(); client.GetChargesCompleted += (_, e) => { if (this.VerifyResult(e, tcs)) { tcs.TrySetResult(e.Result.ToModelCharges()); } }; client.GetChargesAsync(expenseReportId); return(tcs.Task); }