diff --git a/internal/semerrgroup/sem_test.go b/internal/semerrgroup/sem_test.go
index 9fa1207e8..1e06856eb 100644
--- a/internal/semerrgroup/sem_test.go
+++ b/internal/semerrgroup/sem_test.go
@@ -1,6 +1,7 @@
 package semerrgroup
 
 import (
+	"fmt"
 	"sync"
 	"testing"
 	"time"
@@ -26,21 +27,30 @@ func TestSemaphore(t *testing.T) {
 }
 
 func TestSemaphoreOrder(t *testing.T) {
-	num := 10
+	var num = 10
 	var g = New(1)
-	output := make(chan int)
-	go func() {
-		for i := 0; i < num; i++ {
-			require.Equal(t, <-output, i)
-		}
-		require.NoError(t, g.Wait())
-	}()
+	var output = []int{}
 	for i := 0; i < num; i++ {
-		j := i
+		i := i
 		g.Go(func() error {
-			output <- j
+			output = append(output, i)
 			return nil
 		})
 	}
 	require.NoError(t, g.Wait())
+	require.Equal(t, []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, output)
+}
+
+func TestSemaphoreOrderError(t *testing.T) {
+	var g = New(1)
+	var output = []int{}
+	for i := 0; i < 10; i++ {
+		i := i
+		g.Go(func() error {
+			output = append(output, i)
+			return fmt.Errorf("fake err")
+		})
+	}
+	require.EqualError(t, g.Wait(), "fake err")
+	require.Equal(t, []int{0}, output)
 }