diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for network-unexceptional
 
+## 0.2.1.2 -- 2025-02-10
+
+* Check for timeout before checking for fd ready. This might help prevent
+  certain tcp interactions from running too long.
+
 ## 0.2.1.1 -- 2024-02-07
 
 * Update package metadata.
diff --git a/network-unexceptional.cabal b/network-unexceptional.cabal
--- a/network-unexceptional.cabal
+++ b/network-unexceptional.cabal
@@ -1,6 +1,6 @@
 cabal-version:   3.0
 name:            network-unexceptional
-version:         0.2.1.1
+version:         0.2.1.2
 category:        Network
 synopsis:        Network functions that do not throw exceptions
 description:
diff --git a/src/Network/Unexceptional/MutableBytes.hs b/src/Network/Unexceptional/MutableBytes.hs
--- a/src/Network/Unexceptional/MutableBytes.hs
+++ b/src/Network/Unexceptional/MutableBytes.hs
@@ -174,7 +174,7 @@
 waitUntilReadable :: TVar Bool -> Fd -> IO Outcome
 waitUntilReadable !interrupt !fd = do
   (isReadyAction, deregister) <- threadWaitReadSTM fd
-  outcome <- STM.atomically $ (isReadyAction $> Ready) <|> (checkFinished interrupt $> Interrupted)
+  outcome <- STM.atomically $ (checkFinished interrupt $> Interrupted) <|> (isReadyAction $> Ready)
   deregister
   pure outcome
 
