diff --git a/polysemy-process.cabal b/polysemy-process.cabal
--- a/polysemy-process.cabal
+++ b/polysemy-process.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           polysemy-process
-version:        0.6.1.0
+version:        0.7.0.0
 synopsis:       Polysemy Effects for System Processes
 description:    See <https://hackage.haskell.org/package/polysemy-process/docs/Polysemy-Process.html>
 category:       Concurrency
@@ -108,7 +108,7 @@
   ghc-options: -Wall -Wredundant-constraints -Wincomplete-uni-patterns -Wmissing-deriving-strategies -Widentities
   build-depends:
       base ==4.*
-    , incipit-core >=0.1.0.1
+    , incipit-core >=0.2
     , path >=0.7
     , path-io >=1.6.2
     , polysemy >=1.6
@@ -200,6 +200,7 @@
     , polysemy-process
     , polysemy-resume
     , polysemy-test
+    , polysemy-time
     , tasty
     , typed-process
   mixins:
diff --git a/test/Polysemy/Process/Test/ProcessTest.hs b/test/Polysemy/Process/Test/ProcessTest.hs
--- a/test/Polysemy/Process/Test/ProcessTest.hs
+++ b/test/Polysemy/Process/Test/ProcessTest.hs
@@ -2,9 +2,12 @@
 
 module Polysemy.Process.Test.ProcessTest where
 
+import Polysemy.Conc.Effect.Scoped (Scoped)
 import Polysemy.Conc.Interpreter.Race (interpretRace)
+import qualified Polysemy.Conc.Race as Race
 import Polysemy.Resume (resumeHoistError)
 import Polysemy.Test (UnitTest, runTestAuto, (===))
+import Polysemy.Time (Seconds (Seconds))
 import qualified System.Process.Typed as Process
 import System.Process.Typed (ProcessConfig)
 
@@ -28,17 +31,17 @@
 test_process :: UnitTest
 test_process =
   runTestAuto $ interpretRace $ asyncToIOFinal $ interpretProcessByteStringNative True 10 config do
-    response <- resumeHoistError @ProcessError show do
+    response <- resumeHoistError @ProcessError @(Scoped _ _) show do
       withProcess do
         Process.send message
-        Process.recv
+        Race.timeout_ (throw "timed out") (Seconds 5) Process.recv
     message === response
 
 test_processLines :: UnitTest
 test_processLines =
   runTestAuto $ interpretRace $ asyncToIOFinal $ interpretProcessTextLinesNative True 10 config do
-    response <- resumeHoistError @ProcessError show do
+    response <- resumeHoistError @ProcessError @(Scoped _ _) show do
       withProcess do
         Process.send message
-        replicateM 4 Process.recv
+        Race.timeout_ (throw "timed out") (Seconds 5) (replicateM 4 Process.recv)
     messageLines === response
