diff --git a/Haxl/Core/Monad.hs b/Haxl/Core/Monad.hs
--- a/Haxl/Core/Monad.hs
+++ b/Haxl/Core/Monad.hs
@@ -47,6 +47,7 @@
 import Haxl.Core.DataCache as DataCache
 
 import qualified Data.Text as Text
+import qualified Control.Monad.Catch as Catch
 import Control.Exception (Exception(..), SomeException)
 #if __GLASGOW_HASKELL__ >= 708
 import Control.Exception (SomeAsyncException(..))
@@ -317,6 +318,10 @@
 try :: Exception e => GenHaxl u a -> GenHaxl u (Either e a)
 try haxl = (Right <$> haxl) `catch` (return . Left)
 
+-- | @since 0.3.1.0
+instance Catch.MonadThrow (GenHaxl u) where throwM = Haxl.Core.Monad.throw
+-- | @since 0.3.1.0
+instance Catch.MonadCatch (GenHaxl u) where catch = Haxl.Core.Monad.catch
 
 -- -----------------------------------------------------------------------------
 -- Unsafe operations
diff --git a/haxl.cabal b/haxl.cabal
--- a/haxl.cabal
+++ b/haxl.cabal
@@ -1,5 +1,5 @@
 name:                haxl
-version:             0.3.0.0
+version:             0.3.1.0
 synopsis:            A Haskell library for efficient, concurrent,
                      and concise data access.
 homepage:            https://github.com/facebook/Haxl
@@ -38,20 +38,21 @@
 library
 
   build-depends:
-    HUnit == 1.2.*,
-    aeson >= 0.6 && < 0.9,
+    HUnit >= 1.2 && < 1.4,
+    aeson >= 0.6 && < 0.11,
     base == 4.*,
     bytestring >= 0.9 && < 0.11,
     containers == 0.5.*,
     deepseq,
     directory >= 1.1 && < 1.3,
+    exceptions >=0.8 && <0.9,
     filepath >= 1.3 && < 1.5,
     hashable == 1.2.*,
     pretty == 1.1.*,
     text >= 1.1.0.1 && < 1.3,
     time >= 1.4 && < 1.6,
     unordered-containers == 0.2.*,
-    vector == 0.10.*
+    vector >= 0.10 && <0.12
 
   exposed-modules:
     Haxl.Core,
