Httposion return timeout for certain URLs

while even curl works. one of them is:

iex(9)> HTTPoison.get("")
{:error, %HTTPoison.Error{id: nil, reason: :timeout}}

If I use hackney directly, I got:

{:ok, 103,
    "<>; as=\"script\"; rel=\"preload\", </design_picker/aec273bc80dd0dc3a73edce687f7cdaa0e9ef0f5/javascript/_.js>; as=\"script\"; rel=\"preload\", </css_picker/webkit/aec273bc80dd0dc3a73edce687f7cdaa0e9ef0f5/scaffolding.css>; as=\"style\"; rel=\"preload\", </css_picker/webkit/aec273bc80dd0dc3a73edce687f7cdaa0e9ef0f5/design.css>; as=\"style\"; rel=\"preload\", </design_picker/5e49edbd1875f214e0decae1e24b200066780fa8/style/fonts/arimo/arimo-700.latin.woff2>; as=\"font\"; crossorigin; rel=\"preload\", </design_picker/5e49edbd1875f214e0decae1e24b200066780fa8/style/fonts/arimo/arimo-400.latin.woff2>; as=\"font\"; crossorigin; rel=\"preload\""}
 ], #Reference<0.4185236498.3412066306.154891>}

I think there is some shenanigan in http protocol handling. I know this site is backed by cloudflare. How do I debug further? For example, Can I force a particular HTTP version on HTTPosion?

From the first page in the docs :wink:

:hackney_trace.enable(:max, :io)

Thanks. It shows more information but then again, it failed the same way. I think the 103 response confused hackney. From a trace of curl, there are 2 responses. First is 103, next one is 200. My theory is hackney somehow drop the 200 response and hence the failure.

I will file a bug against hackney. hackney should ignore all 1XX responses.