diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for supervisors
 
+## 0.2.1.0 -- 2020-01-26
+
+* Fix a bug that could potentially result in some threads not being
+  killed.
+
 ## 0.2.0.0 -- 2018-12-18
 
 * Make the type of `withSupervisor` more general.
diff --git a/src/Supervisors.hs b/src/Supervisors.hs
--- a/src/Supervisors.hs
+++ b/src/Supervisors.hs
@@ -24,9 +24,15 @@
 import Control.Concurrent       (ThreadId, forkIO, myThreadId, throwTo)
 import Control.Concurrent.Async (withAsync)
 import Control.Exception.Safe
-    (Exception, SomeException, bracket, bracket_, toException, withException)
+    ( Exception
+    , SomeException
+    , bracket
+    , bracket_
+    , finally
+    , toException
+    , withException
+    )
 import Control.Monad            (forever, void)
-import Data.Foldable            (traverse_)
 
 import qualified Data.Set as S
 
@@ -73,7 +79,13 @@
             Right kids -> do
                 writeTVar stateVar $ Left (toException exn)
                 pure kids)
-        (traverse_ (`throwTo` exn))
+        (foldr
+            -- important: chain these together with `finally`,
+            -- rather than (>>=) or friends, so that if one
+            -- throws an exception we still run the others.
+            (\kid old -> throwTo kid exn `finally` old)
+            (pure ())
+        )
         (\_ -> pure ())
 
 -- | Launch the IO action in a thread, monitored by the 'Supervisor'. If the
diff --git a/supervisors.cabal b/supervisors.cabal
--- a/supervisors.cabal
+++ b/supervisors.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                supervisors
-version:             0.2.0.0
+version:             0.2.1.0
 stability:           Experimental
 synopsis:            Monitor groups of threads with non-hierarchical lifetimes.
 description:
@@ -39,7 +39,7 @@
 
 common shared-opts
   build-depends:
-      base >=4.11 && <4.13
+      base >=4.11 && <5
 
 library
   import: shared-opts
@@ -59,7 +59,7 @@
   hs-source-dirs: tests/
   build-depends:
       supervisors
-    , hspec ^>=2.6.0
+    , hspec >=2.6.0 && <2.8
   default-language:    Haskell2010
 
 source-repository head
