diff --git a/minio-hs.cabal b/minio-hs.cabal
--- a/minio-hs.cabal
+++ b/minio-hs.cabal
@@ -1,5 +1,5 @@
 name:                minio-hs
-version:             0.2.0
+version:             0.2.1
 synopsis:            A Minio client library, compatible with S3 like services.
 description:         minio-hs provides simple APIs to access Minio and Amazon
                      S3 compatible object storage server. For more details,
diff --git a/src/Network/Minio/Utils.hs b/src/Network/Minio/Utils.hs
--- a/src/Network/Minio/Utils.hs
+++ b/src/Network/Minio/Utils.hs
@@ -24,14 +24,13 @@
 import qualified Control.Monad.Trans.Resource as R
 
 import qualified Data.ByteString as B
+import qualified Data.ByteString.Lazy as LB
 import qualified Data.Conduit as C
 import qualified Data.Conduit.Binary as CB
-import           Data.Default (Default(..))
 import qualified Data.Text as T
 import           Data.Text.Encoding.Error (lenientDecode)
 import           Data.Text.Read (decimal)
 import           Data.Time
-import qualified Network.HTTP.Client as NClient
 import           Network.HTTP.Conduit (Response)
 import qualified Network.HTTP.Conduit as NC
 import qualified Network.HTTP.Types as HT
@@ -40,7 +39,6 @@
 
 import           Lib.Prelude
 
-import           Network.Minio.Errors
 import           Network.Minio.XmlParser (parseErrResponse)
 
 allocateReadFile :: (R.MonadResource m, R.MonadResourceBase m, MonadCatch m)
@@ -119,7 +117,7 @@
         => NC.Request -> NC.Manager
         -> m (NC.Response LByteString)
 httpLbs req mgr = do
-  respE <- liftIO $ tryHttpEx $ (NClient.httpLbs req mgr)
+  respE <- liftIO $ tryHttpEx $ (NC.httpLbs req mgr)
   resp <- either throwM return respE
   unless (isSuccessStatus $ NC.responseStatus resp) $
     case contentTypeMay resp of
@@ -127,14 +125,16 @@
         sErr <- parseErrResponse $ NC.responseBody resp
         throwM sErr
 
-      _ -> throwM $ NC.StatusCodeException (NC.responseStatus resp) [] def
+      _ -> throwM $ NC.HttpExceptionRequest req $
+        NC.StatusCodeException (const () <$> resp) (show resp)
 
   return resp
   where
     tryHttpEx :: (IO (NC.Response LByteString))
               -> IO (Either NC.HttpException (NC.Response LByteString))
     tryHttpEx = try
-    contentTypeMay resp = lookupHeader Hdr.hContentType $ NC.responseHeaders resp
+    contentTypeMay resp = lookupHeader Hdr.hContentType $
+                          NC.responseHeaders resp
 
 http :: (R.MonadResourceBase m, R.MonadResource m)
      => NC.Request -> NC.Manager
@@ -149,12 +149,16 @@
         sErr <- parseErrResponse $ respBody
         throwM sErr
 
-      _ -> throwM $ NC.StatusCodeException (NC.responseStatus resp) [] def
+      _ -> do
+        content <- LB.toStrict . NC.responseBody <$> NC.lbsResponse resp
+        throwM $ NC.HttpExceptionRequest req $
+           NC.StatusCodeException (const () <$> resp) $ content
 
+
   return resp
   where
     tryHttpEx :: (R.MonadResourceBase m) => (m a)
-              -> m (Either MinioErr a)
+              -> m (Either NC.HttpException a)
     tryHttpEx = ExL.try
     contentTypeMay resp = lookupHeader Hdr.hContentType $ NC.responseHeaders resp
 
