TaskCompletionSource<OperationResponse> IssueOperationResponseFuture(int messageId) { var future = new TaskCompletionSource<OperationResponse>(); lock (operationResponseFuture) { operationResponseFuture.Add(messageId, future); } return future; }