diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,3 +1,7 @@
+### 0.1.1.0
+
+- Added function *httpLbsBrReadWithCustomTimeout*.
+
 ### 0.1.0.0
 
 - Initial version.
diff --git a/Network/HTTP/Client/BrReadWithTimeout.hs b/Network/HTTP/Client/BrReadWithTimeout.hs
--- a/Network/HTTP/Client/BrReadWithTimeout.hs
+++ b/Network/HTTP/Client/BrReadWithTimeout.hs
@@ -21,6 +21,7 @@
 module Network.HTTP.Client.BrReadWithTimeout (
                                               fromResponseTimeout
                                              ,brReadWithTimeout
+                                             ,httpLbsBrReadWithCustomTimeout
                                              ,httpLbsBrReadWithTimeout
                                              ) where
 
@@ -68,11 +69,20 @@
 
 -- | This is like 'httpLbs' but with a timeout between body read events.
 --
+-- The value of the timeout is passed in the first parameter as a number of
+-- microseconds. A negative value effectively disables the timeout which makes
+-- the function behave exactly as 'httpLbs'.
+httpLbsBrReadWithCustomTimeout :: Int -> Request -> Manager ->
+    IO (Response L.ByteString)
+httpLbsBrReadWithCustomTimeout tmo req man = withResponse req man $ \res -> do
+    bss <- brConsume $ brReadWithTimeout tmo req $ responseBody res
+    return res { responseBody = L.fromChunks bss }
+
+-- | This is like 'httpLbs' but with a timeout between body read events.
+--
 -- The value of the timeout is retrieved from the 'ResponseTimeout' of the
 -- request.
 httpLbsBrReadWithTimeout :: Request -> Manager -> IO (Response L.ByteString)
-httpLbsBrReadWithTimeout req man = withResponse req man $ \res -> do
-    let tmo = fromResponseTimeout req man
-    bss <- brConsume $ brReadWithTimeout tmo req $ responseBody res
-    return res { responseBody = L.fromChunks bss }
+httpLbsBrReadWithTimeout req man =
+    httpLbsBrReadWithCustomTimeout (fromResponseTimeout req man) req man
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -32,29 +32,19 @@
         server_name     main;
 
         location /slow {
-            # send a single response body chunk once in 20 sec
-            echo 1;
-            echo_flush;
-            echo_sleep 20;
-            echo 2;
-            echo_flush;
-            echo_sleep 20;
-            echo 3;
-            echo_flush;
-            echo_sleep 20;
+            echo 1; echo_flush;
+            # send extra chunks of the response body once in 20 sec
+            echo_sleep 20; echo 2; echo_flush;
+            echo_sleep 20; echo 3; echo_flush;
+            echo_sleep 20; echo 4;
         }
 
         location /very/slow {
-            echo 1;
-            echo_flush;
-            echo_sleep 20;
-            # chunk 2 is extremely slow (40 sec)
-            echo 2;
-            echo_flush;
-            echo_sleep 40;
-            echo 3;
-            echo_flush;
-            echo_sleep 20;
+            echo 1; echo_flush;
+            echo_sleep 20; echo 2; echo_flush;
+            # chunk 3 is extremely slow (40 sec)
+            echo_sleep 40; echo 3; echo_flush;
+            echo_sleep 20; echo 4;
         }
     }
 }
@@ -71,7 +61,7 @@
 <b>Prelude HTTP.Client BrReadWithTimeout&gt;</b> reqSlow &lt;- parseRequest "GET http://127.0.0.1:8010/slow"
 <b>Prelude HTTP.Client BrReadWithTimeout&gt;</b> :set +s
 <b>Prelude HTTP.Client BrReadWithTimeout&gt;</b> httpLbs reqVerySlow man
-Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Server","nginx/1.22.0"),("Date","Wed, 22 Jun 2022 03:54:43 GMT"),("Content-Type","application/octet-stream"),("Transfer-Encoding","chunked"),("Connection","keep-alive")], responseBody = "1\n2\n3\n", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request {
+Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Server","nginx/1.22.0"),("Date","Thu, 23 Jun 2022 22:04:02 GMT"),("Content-Type","application/octet-stream"),("Transfer-Encoding","chunked"),("Connection","keep-alive")], responseBody = "1\n2\n3\n4\n", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request {
   host                 = "127.0.0.1"
   port                 = 8010
   secure               = False
@@ -87,7 +77,7 @@
   proxySecureMode      = ProxySecureWithConnect
 }
 }
-(80.11 secs, 1,087,472 bytes)
+(80.09 secs, 1,084,840 bytes)
 <b>Prelude HTTP.Client BrReadWithTimeout&gt;</b> httpLbsBrReadWithTimeout reqVerySlow man
 &ast;&ast;&ast; Exception: HttpExceptionRequest Request {
   host                 = "127.0.0.1"
@@ -106,7 +96,7 @@
 }
  ResponseTimeout
 <b>Prelude HTTP.Client BrReadWithTimeout&gt;</b> httpLbsBrReadWithTimeout reqSlow man
-Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Server","nginx/1.22.0"),("Date","Wed, 22 Jun 2022 03:57:20 GMT"),("Content-Type","application/octet-stream"),("Transfer-Encoding","chunked"),("Connection","keep-alive")], responseBody = "1\n2\n3\n", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request {
+Response {responseStatus = Status {statusCode = 200, statusMessage = "OK"}, responseVersion = HTTP/1.1, responseHeaders = [("Server","nginx/1.22.0"),("Date","Thu, 23 Jun 2022 22:08:46 GMT"),("Content-Type","application/octet-stream"),("Transfer-Encoding","chunked"),("Connection","keep-alive")], responseBody = "1\n2\n3\n4\n", responseCookieJar = CJ {expose = []}, responseClose' = ResponseClose, responseOriginalRequest = Request {
   host                 = "127.0.0.1"
   port                 = 8010
   secure               = False
@@ -122,7 +112,7 @@
   proxySecureMode      = ProxySecureWithConnect
 }
 }
-(60.07 secs, 1,077,320 bytes)
+(60.07 secs, 1,082,880 bytes)
 </pre>
 
 Here, the first request comes from the standard `httpLbs` which, after timely
@@ -130,10 +120,11 @@
 chunk of the body), no longer applies any timeouts and may last as long as the
 response endures: in this case, it lasts 80 seconds and successfully returns.
 In the second request, `httpLbsBrReadWithTimeout` timely receives the first
-chunk of the response too, however the second chunk is coming in 40 seconds
-which exceeds the default response timeout value (30 seconds), and the function
-throws `ResponseTimeout` exception after 50 seconds from the start. In the third
-request, `httpLbsBrReadWithTimeout` returns successfully after 60 seconds
-because every chunk of the response comes every 20 seconds without triggering
-timeouts.
+chunk of the response too, the second chunk comes in 20 seconds, and finally,
+as the third chunk is going to come in 40 seconds which exceeds the default
+response timeout value (30 seconds), the function throws `ResponseTimeout`
+exception after 50 seconds from the start of the request. In the third request,
+`httpLbsBrReadWithTimeout` returns successfully after 60 seconds because every
+extra chunk of the response was coming every 20 seconds without triggering the
+timeout.
 
diff --git a/http-client-brread-timeout.cabal b/http-client-brread-timeout.cabal
--- a/http-client-brread-timeout.cabal
+++ b/http-client-brread-timeout.cabal
@@ -1,5 +1,5 @@
 name:                   http-client-brread-timeout
-version:                0.1.0.2
+version:                0.1.1.0
 synopsis:       Http client with time-limited brRead
 description:    Http client with timeouts applied in between body read events.
         .
