bool TryGetAndRemoveFuture(int messageId, out TaskCompletionSource<OperationResponse> future) { lock (operationResponseFuture) { var success = operationResponseFuture.TryGetValue(messageId, out future); if (success) { operationResponseFuture.Remove(ReservedParameterNo.MessageId); } return success; } }