diff --git a/pipes.cabal b/pipes.cabal
--- a/pipes.cabal
+++ b/pipes.cabal
@@ -1,8 +1,8 @@
 Name: pipes
-Version: 4.3.0
+Version: 4.3.1
 Cabal-Version: >= 1.10
 Build-Type: Simple
-Tested-With: GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
+Tested-With: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.2, GHC == 8.0.1
 License: BSD3
 License-File: LICENSE
 Copyright: 2012-2016 Gabriel Gonzalez
diff --git a/src/Pipes.hs b/src/Pipes.hs
--- a/src/Pipes.hs
+++ b/src/Pipes.hs
@@ -89,6 +89,8 @@
 import Data.Monoid
 #endif
 
+import qualified Control.Monad.Catch
+
 -- Re-exports
 import Control.Monad.Morph (MFunctor(hoist), MMonad(embed))
 
@@ -543,7 +545,7 @@
     {-# INLINE throwM #-}
 
 instance MonadCatch m => MonadCatch (ListT m) where
-    catch l k = Select (catch (enumerate l) (\e -> enumerate (k e)))
+    catch l k = Select (Control.Monad.Catch.catch (enumerate l) (\e -> enumerate (k e)))
     {-# INLINE catch #-}
 
 instance Monad m => MonadZip (ListT m) where
diff --git a/src/Pipes/Internal.hs b/src/Pipes/Internal.hs
--- a/src/Pipes/Internal.hs
+++ b/src/Pipes/Internal.hs
@@ -50,6 +50,8 @@
 import Data.Monoid
 #endif
 
+import qualified Control.Monad.Catch
+
 {-| A 'Proxy' is a monad transformer that receives and sends information on both
     an upstream and downstream interface.
 
@@ -232,7 +234,7 @@
             Pure    r      -> Pure r
             M          m   -> M ((do
                 p' <- m
-                return (go p') ) `catch` (\e -> return (f e)) )
+                return (go p') ) `Control.Monad.Catch.catch` (\e -> return (f e)) )
 
 {-| The monad transformer laws are correct when viewed through the 'observe'
     function:
