diff --git a/shh.cabal b/shh.cabal
--- a/shh.cabal
+++ b/shh.cabal
@@ -1,5 +1,5 @@
 name:                shh
-version:             0.7.0.4
+version:             0.7.0.5
 synopsis:            Simple shell scripting from Haskell
 description:         Provides a shell scripting environment for Haskell. It
                      helps you use external binaries, and allows you to
diff --git a/src/Shh/Internal.hs b/src/Shh/Internal.hs
--- a/src/Shh/Internal.hs
+++ b/src/Shh/Internal.hs
@@ -442,7 +442,7 @@
             }
         )
         (\(_,_,_,ph) -> terminateProcess ph)
-        $ \(_,_,_,ph) -> waitProc cmd args ph `onException` terminateProcess ph
+        $ \(_,_,_,ph) -> waitProc cmd args ph `onException` (terminateProcess ph >> waitForProcess ph)
 
 -- | Create a `Proc` from a command and a list of arguments. Does not delegate
 -- control-c handling.
