diff --git a/Network/HTTP/ReverseProxy.hs b/Network/HTTP/ReverseProxy.hs
--- a/Network/HTTP/ReverseProxy.hs
+++ b/Network/HTTP/ReverseProxy.hs
@@ -7,6 +7,12 @@
       -- * WAI + http-conduit
     , waiProxyTo
     , defaultOnExc
+    , waiProxyToSettings
+      -- ** Settings
+    , WaiProxySettings
+    , def
+    , wpsOnExc
+    , wpsTimeout
       -- * WAI to Raw
     , waiToRaw
     ) where
@@ -30,6 +36,7 @@
 import Data.Conduit.Binary (sourceFileRange)
 import qualified Data.IORef as I
 import Network.Socket (PortNumber (PortNum), SockAddr (SockAddrInet))
+import Data.Default (Default (def))
 
 -- | Host\/port combination to which we want to proxy.
 data ProxyDest = ProxyDest
@@ -110,7 +117,20 @@
            -- simple 502 error page, use 'defaultOnExc'.
            -> HC.Manager -- ^ connection manager to utilize
            -> WAI.Application
-waiProxyTo getDest onError manager req = do
+waiProxyTo getDest onError = waiProxyToSettings getDest def { wpsOnExc = onError }
+
+data WaiProxySettings = WaiProxySettings
+    { wpsOnExc :: SomeException -> WAI.Application
+    , wpsTimeout :: Maybe Int
+    }
+
+instance Default WaiProxySettings where
+    def = WaiProxySettings
+        { wpsOnExc = defaultOnExc
+        , wpsTimeout = Nothing
+        }
+
+waiProxyToSettings getDest wps manager req = do
     edest <- getDest req
     case edest of
         Left response -> return response
@@ -125,11 +145,11 @@
                     , HC.requestBody = HC.RequestBodySourceChunked $ mapOutput fromByteString $ WAI.requestBody req
                     , HC.redirectCount = 0
                     , HC.checkStatus = \_ _ -> Nothing
-                    , HC.responseTimeout = Nothing
+                    , HC.responseTimeout = wpsTimeout wps
                     }
             ex <- try $ HC.http req' manager
             case ex of
-                Left e -> onError e req
+                Left e -> wpsOnExc wps e req
                 Right res -> do
                     (src, _) <- unwrapResumable $ HC.responseBody res
                     return $ WAI.ResponseSource
diff --git a/http-reverse-proxy.cabal b/http-reverse-proxy.cabal
--- a/http-reverse-proxy.cabal
+++ b/http-reverse-proxy.cabal
@@ -1,5 +1,5 @@
 name:                http-reverse-proxy
-version:             0.1.0.7
+version:             0.1.1
 synopsis:            Reverse proxy HTTP requests, either over raw sockets or with WAI
 description:         Provides a simple means of reverse-proxying HTTP requests. The raw approach uses the same technique as leveraged by keter, whereas the WAI approach performs full request/response parsing via WAI and http-conduit.
 homepage:            https://github.com/fpco/http-reverse-proxy
@@ -29,6 +29,7 @@
                      , network
                      , conduit                >= 0.5
                      , warp                   >= 1.3.4
+                     , data-default
 
 test-suite test
     type: exitcode-stdio-1.0
