diff --git a/Control/Concurrent/Timeout.hs b/Control/Concurrent/Timeout.hs
--- a/Control/Concurrent/Timeout.hs
+++ b/Control/Concurrent/Timeout.hs
@@ -23,7 +23,7 @@
 -------------------------------------------------------------------------------
 
 -- from base:
-import Control.Concurrent       ( forkIO, myThreadId, throwTo, killThread )
+import Control.Concurrent       ( forkIOWithUnmask, myThreadId, throwTo, killThread )
 import Control.Exception        ( Exception, bracket, handleJust )
 import Control.Monad            ( return, (>>), fmap )
 import Data.Bool                ( otherwise )
@@ -108,7 +108,7 @@
         ex  <- fmap Timeout newUnique
         handleJust (\e -> if e == ex then Just () else Nothing)
                    (\_ -> return Nothing)
-                   (bracket (forkIO (delay n >> throwTo pid ex))
+                   (bracket (forkIOWithUnmask (\unmask -> unmask (delay n >> throwTo pid ex)))
                             (killThread)
                             (\_ -> fmap Just f)
                    )
diff --git a/unbounded-delays.cabal b/unbounded-delays.cabal
--- a/unbounded-delays.cabal
+++ b/unbounded-delays.cabal
@@ -1,5 +1,5 @@
 name:          unbounded-delays
-version:       0.1.0.9
+version:       0.1.0.10
 cabal-version: >= 1.6
 build-type:    Custom
 author:        Bas van Dijk <v.dijk.bas@gmail.com>
