diff --git a/Network/HTTP/ReverseProxy.hs b/Network/HTTP/ReverseProxy.hs
--- a/Network/HTTP/ReverseProxy.hs
+++ b/Network/HTTP/ReverseProxy.hs
@@ -135,7 +135,7 @@
                     return $ WAI.ResponseSource
                         (HC.responseStatus res)
                         (filter (\(key, _) -> not $ key `member` strippedHeaders) $ HC.responseHeaders res)
-                        (mapOutput (Chunk . fromByteString) src)
+                        (src =$= awaitForever (\bs -> yield (Chunk $ fromByteString bs) >> yield Flush))
   where
     strippedHeaders = asSet $ fromList ["content-length", "transfer-encoding", "accept-encoding", "content-encoding"]
     asSet :: Set a -> Set a
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.3
+version:             0.1.0.4
 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
@@ -43,6 +43,10 @@
                  , hspec                      >= 1.3
                  , warp                       >= 1.3
                  , bytestring
+                 , conduit
+                 , blaze-builder
+                 , transformers
+                 , lifted-base
 
 source-repository head
   type:     git
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -1,14 +1,19 @@
 {-# LANGUAGE OverloadedStrings #-}
 import           Control.Concurrent         (forkIO, threadDelay)
 import qualified Data.ByteString.Lazy.Char8 as L8
+import           Data.Conduit               (yield, Flush (..), ($$+-), await, runResourceT)
 import           Data.Conduit.Network       (serverSettings, runTCPServer)
 import qualified Network.HTTP.Conduit       as HC
 import           Network.HTTP.ReverseProxy  (ProxyDest (..), defaultOnExc,
                                              rawProxyTo, waiProxyTo, waiToRaw)
 import           Network.HTTP.Types         (status200)
-import           Network.Wai                (responseLBS, Response (ResponseFile))
+import           Network.Wai                (responseLBS, Response (ResponseFile, ResponseSource))
 import           Network.Wai.Handler.Warp   (run)
 import           Test.Hspec                 (describe, hspec, it, shouldBe)
+import           Blaze.ByteString.Builder   (fromByteString)
+import           Control.Monad              (forever)
+import           Control.Monad.IO.Class     (liftIO)
+import           System.Timeout.Lifted      (timeout)
 
 main :: IO ()
 main = hspec $ do
@@ -22,6 +27,19 @@
             threadDelay 100000
             lbs <- HC.simpleHttp "http://localhost:5002"
             lbs `shouldBe` content
+        it "deals with streaming data" $ do
+            manager <- HC.newManager HC.def
+            forkIO $ run 5003 $ const $ return $ ResponseSource status200 [] $ forever $ do
+                yield $ Chunk $ fromByteString "hello"
+                yield Flush
+                liftIO $ threadDelay 10000000
+            forkIO $ run 5004 $ waiProxyTo (const $ return $ Right $ ProxyDest "localhost" 5003) defaultOnExc manager
+            threadDelay 100000
+            req <- HC.parseUrl "http://localhost:5004"
+            mbs <- runResourceT $ timeout 1000000 $ do
+                res <- HC.http req manager
+                HC.responseBody res $$+- await
+            mbs `shouldBe` Just (Just "hello")
     describe "waiToRaw" $ do
         it "works" $ do
             let content = "waiToRaw"
