public Task <string> SayHello(string name) { var taskCompletionSource = new TaskCompletionSource <string>(); if (!IsOpen) { throw new InvalidOperationException("Client is not open"); } _client.SayHelloAsync(name, taskCompletionSource); return(taskCompletionSource.Task); }