diff --git a/go.mod b/go.mod
index 0b8e00899c..138f374fa8 100644
--- a/go.mod
+++ b/go.mod
@@ -17,7 +17,7 @@ require (
 	github.com/spf13/pflag v1.0.5
 	github.com/stretchr/testify v1.7.0
 	go.opencensus.io v0.23.0
-	go.uber.org/atomic v1.9.0 // indirect
+	go.uber.org/atomic v1.9.0
 	go.uber.org/multierr v1.7.0
 	go.uber.org/zap v1.20.0
 	golang.org/x/net v0.0.0-20220114011407-0dd24b26b47d // indirect
diff --git a/private/pkg/thread/thread_test.go b/private/pkg/thread/thread_test.go
new file mode 100644
index 0000000000..b6fc690d84
--- /dev/null
+++ b/private/pkg/thread/thread_test.go
@@ -0,0 +1,42 @@
+// Copyright 2020-2022 Buf Technologies, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package thread
+
+import (
+	"context"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"go.uber.org/atomic"
+)
+
+func TestParallelizeWithImmediateCancellation(t *testing.T) {
+	t.Parallel()
+	// The bulk of the code relies on subtle timing that's difficult to
+	// reproduce, but we can test the most basic use case.
+	var executed atomic.Int64
+	var jobs []func(context.Context) error
+	for i := 0; i < 10; i++ {
+		jobs = append(jobs, func(_ context.Context) error {
+			executed.Inc()
+			return nil
+		})
+	}
+	ctx, cancel := context.WithCancel(context.Background())
+	cancel()
+	err := Parallelize(ctx, jobs)
+	assert.Nil(t, err, "parallelize error")
+	assert.Equal(t, int64(0), executed.Load(), "jobs executed")
+}