Added a helper type to more safely handle async request completion.

Fixes VOL-2286

Change-Id: Ifcbbfdf64c3614838adbbaa11ca69d3d49c44861
diff --git a/rw_core/utils/core_utils_test.go b/rw_core/utils/core_utils_test.go
index e0d0e75..9f8dd87 100644
--- a/rw_core/utils/core_utils_test.go
+++ b/rw_core/utils/core_utils_test.go
@@ -36,14 +36,14 @@
 	taskFailureError = status.Error(codes.Internal, "test failure task")
 }
 
-func runSuccessfulTask(ch chan interface{}, durationRange int) {
+func runSuccessfulTask(response Response, durationRange int) {
 	time.Sleep(time.Duration(rand.Intn(durationRange)) * time.Millisecond)
-	ch <- nil
+	response.Done()
 }
 
-func runFailureTask(ch chan interface{}, durationRange int) {
+func runFailureTask(response Response, durationRange int) {
 	time.Sleep(time.Duration(rand.Intn(durationRange)) * time.Millisecond)
-	ch <- taskFailureError
+	response.Error(taskFailureError)
 }
 
 func runMultipleTasks(timeout, numTasks, taskDurationRange, numSuccessfulTask, numFailuretask int) []error {
@@ -51,17 +51,17 @@
 		return []error{status.Error(codes.FailedPrecondition, "invalid-num-tasks")}
 	}
 	numSuccessfulTaskCreated := 0
-	chnls := make([]chan interface{}, numTasks)
+	responses := make([]Response, numTasks)
 	for i := 0; i < numTasks; i++ {
-		chnls[i] = make(chan interface{})
+		responses[i] = NewResponse()
 		if numSuccessfulTaskCreated < numSuccessfulTask {
-			go runSuccessfulTask(chnls[i], taskDurationRange)
+			go runSuccessfulTask(responses[i], taskDurationRange)
 			numSuccessfulTaskCreated += 1
 			continue
 		}
-		go runFailureTask(chnls[i], taskDurationRange)
+		go runFailureTask(responses[i], taskDurationRange)
 	}
-	return WaitForNilOrErrorResponses(int64(timeout), chnls...)
+	return WaitForNilOrErrorResponses(int64(timeout), responses...)
 }
 
 func getNumSuccessFailure(inputs []error) (numSuccess, numFailure, numTimeout int) {