public Task Open() { var taskCompletionSource = new TaskCompletionSource <bool>(); if (IsOpen) { taskCompletionSource.TrySetResult(false); } else { _client.OpenAsync(taskCompletionSource); } return(taskCompletionSource.Task); }