<div dir="ltr">I'm running into a problem handling requests with streaming request bodies that fail - using http-client, the failure takes a long time (potentially never) to propagate. Simple code (runnable project <a href="https://github.com/mfine/streamy">here</a>):<div><pre style="color:rgb(0,0,0)">{-# LANGUAGE OverloadedStrings #-}

import Control.Monad
import Data.Conduit.Combinators
import Network.HTTP.Conduit
import System.Environment

a :: IO ()
a = do
  manager <- newManager tlsManagerSettings
  request <- parseUrl "<a href="http://httpbin.org/status/409">http://httpbin.org/status/409</a>"
  void $ httpLbs request manager

b :: IO ()
b = do
  manager <- newManager tlsManagerSettings
  request <- parseUrl "<a href="http://httpbin.org/status/409">http://httpbin.org/status/409</a>"
  void $ flip httpLbs manager request
    { requestBody = requestBodySourceChunked $ repeatM $ return "a"
    }</pre></div><div>Running "a" above works as expected (propagating the error immediately). Running "b" has variable results, mostly never propagating the error. Looking at the wire, I can see that the 409 status comes back, but the exception does not propagate.</div><div><br></div><div>Is there something I can do here to get quicker failure? Thanks!</div><div><br></div><div>Mark</div></div>