diff --git a/haskell-neo4j-client.cabal b/haskell-neo4j-client.cabal
--- a/haskell-neo4j-client.cabal
+++ b/haskell-neo4j-client.cabal
@@ -1,5 +1,5 @@
 name:                haskell-neo4j-client
-version:             0.3.2.2
+version:             0.3.2.3
 synopsis:            A Haskell neo4j client
 description:         
     Library to interact with Neo4j databases. 
@@ -48,7 +48,7 @@
                    , HUnit                       >= 1.2
                    , Cabal
                    , text                        >= 1.1
-                   , http-client                 >= 0.4
+                   , http-client                 >= 0.5
                    , http-client-tls             >= 0.2
                    , http-conduit                >= 2.1
                    , http-types                  >= 0.8
@@ -80,7 +80,7 @@
   build-depends:       base                  == 4.*
                      , containers            >= 0.5
                      , text                  >= 1.1
-                     , http-client           >= 0.4
+                     , http-client           >= 0.5
                      , http-client-tls       >= 0.2
                      , http-conduit          >= 2.1
                      , http-types            >= 0.8
diff --git a/src/Database/Neo4j/Http.hs b/src/Database/Neo4j/Http.hs
--- a/src/Database/Neo4j/Http.hs
+++ b/src/Database/Neo4j/Http.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings  #-}
 
 module Database.Neo4j.Http where
@@ -77,21 +78,33 @@
          let conn = Connection hostname port mgr (Just creds) True
          liftIO $ runNeo4j cmds conn
 
+#if MIN_VERSION_http_client(0,4,30)
+defaultReq = HC.defaultRequest
+#else
+defaultReq = def
+#endif
 
 -- | General function for HTTP requests
 httpReq :: Connection -> HT.Method -> S.ByteString -> L.ByteString -> (HT.Status -> Bool) ->
      IO (HC.Response L.ByteString)
 httpReq (Connection h p m c s) method path body statusCheck = do
-            let request = def {
+            let request = defaultReq {
                     HC.host = h,
                     HC.port = p,
                     HC.path = path,
                     HC.method = method,
                     HC.requestBody = HC.RequestBodyLBS body,
                     HC.secure = s,
+#if MIN_VERSION_http_client(0,5,0)
+                    HC.checkResponse = \_ r -> let s = HC.responseStatus r in 
+                                                 if statusCheck s
+                                                 then return ()
+                                                 else throw (Neo4jUnexpectedResponseException s),
+#else
                     HC.checkStatus = \s _ _ -> if statusCheck s
                                                  then Nothing
                                                  else Just (toException $ Neo4jUnexpectedResponseException s),
+#endif
                     HC.requestHeaders = [(HT.hAccept, "application/json; charset=UTF-8"),
                                           (HT.hContentType, "application/json")]}
             -- TODO: Would be better to use exceptions package Control.Monad.Catch ??
diff --git a/tests/IntegrationTests.hs b/tests/IntegrationTests.hs
--- a/tests/IntegrationTests.hs
+++ b/tests/IntegrationTests.hs
@@ -49,6 +49,14 @@
     where --checkExc :: (Exception e, Show e) => Maybe e -> Assertion
           checkExc Nothing = assertFailure $ "Expected exception " <> show exExc <> " but none raised"
           checkExc (Just e) = assertEqual "" exExc e
+
+assertFException :: (Neo4jException -> Assertion) -> IO a -> Assertion
+assertFException f action = do
+        resExc <- getException action
+        checkExc resExc
+    where --checkExc :: (Exception e, Show e) => Maybe e -> Assertion
+          checkExc Nothing = assertFailure $ "Expected exception but none raised"
+          checkExc (Just e) = f e
     
 -- | handy assertEqual inside a Neo4j monad
 neo4jEqual :: (Show a, Eq a) => a -> a -> Neo4j ()
@@ -98,8 +106,8 @@
 
 -- | Test connecting to a non-existing server
 case_NoConnection :: Assertion
-case_NoConnection = assertException expException $ withConnection "localhost" 77 $ createNode someProperties
-    where expException = Neo4jHttpException "FailedConnectionException2 \"localhost\" 77 False connect: does not exist (Connection refused)"
+case_NoConnection = assertFException f $ withConnection "localhost" 77 $ createNode someProperties
+    where f e = assertBool "" $ e == Neo4jHttpException "FailedConnectionException2 \"localhost\" 77 False connect: does not exist (Connection refused)" || e == Neo4jHttpException "HttpExceptionRequest Request {\n  host                 = \"localhost\"\n  port                 = 77\n  secure               = False\n  requestHeaders       = [(\"Accept\",\"application/json; charset=UTF-8\"),(\"Content-Type\",\"application/json\")]\n  path                 = \"/db/data/node\"\n  queryString          = \"\"\n  method               = \"POST\"\n  proxy                = Nothing\n  rawBody              = False\n  redirectCount        = 10\n  responseTimeout      = ResponseTimeoutDefault\n  requestVersion       = HTTP/1.1\n}\n (ConnectionFailure connect: does not exist (Connection refused))"
 
 -- | Test connecting to a server with improper credentials
 case_ImproperCredentials :: Assertion
