Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Moving from Requests.jl to HTTP.jl #58

Closed
cormullion opened this issue Jun 12, 2017 · 30 comments
Closed

Moving from Requests.jl to HTTP.jl #58

cormullion opened this issue Jun 12, 2017 · 30 comments

Comments

@cormullion
Copy link

Just wondering whether it's easy (or advised) to move from using Requests.jl to HTTP.jl. I thought it might be possible to simply swap, but now I'm not so sure:

Here's Requests, followed by HTTP:

julia> response = Requests.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/")
Response(200 OK, 14 headers, 1488 bytes in body)

julia> response = HTTP.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/")
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-type: application/json
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Content-Length: 0
Pragma: no-cache
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: Content-Type
"""
@quinnj
Copy link
Member

quinnj commented Jun 12, 2017

You'll have to give a little information as to what seems to be wrong; all I see are two GET requests that both returned 200s. One thing in particular that can be helpful is to run HTTP.get(...; verbose=true) to see the exact sequence of events while making the request.

@cormullion
Copy link
Author

Oh, sorry. The Requests version of get returns 1488 bytes of information, the HTTP one doesn't appear to return any. I had thought it might be a straightforward swap, but I see it obviously isn't.. No worries, I'll stay with Requests! :)

@quinnj
Copy link
Member

quinnj commented Jun 12, 2017

I'm more than happy to help debug what's going on; like I mentioned, posting the results of HTTP.get(...; verbose=true) is a good first step to see what's happening in the actual request. Also, if it's possible to share a public version of the request you're trying to make, I can try to debug further why there's a difference here.

@cormullion
Copy link
Author

Cool, thanks. The code (using Requests) is all here. It controls my lights — it would be cool if you could access it from where you are, but perhaps a bit worrying as well... :)

From Requests I get:

julia> response = Requests.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/")
Response(200 OK, 14 headers, 1493 bytes in body)

julia> String(response)
"{\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14988,\"sat\":141,\"effect\":\"none\",\"xy\":[0.4575,0.4101],\"ct\":365,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Living room south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:f6:af:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":

...

uniqueid\":\"00:17:88:01:00:d0:e5:1f-0b\",\"swversion\":\"5.23.1.13452\"}}"

And from HTTP I get:

julia> response = HTTP.get("http://192.168.1.3/api/lSsXQfrm7rC32SQ0/lights/", verbose=true)
[HTTP - 2017-06-12T15:59:26.576]: using default client
[HTTP - 2017-06-12T15:59:26.576]: using request options: :chunksize=>1048576, :gzip=>true, :connecttimeout=>15.0, :readtimeout=>15.0, :tlsconfig=>MbedTLS.SSLConfig(), :maxredirects=>5, :allowredirects=>true, :forwardheaders=>false, :retries=>3
[HTTP - 2017-06-12T15:59:26.576]: checking if any existing connections to '192.168.1.3' are re-usable
[HTTP - 2017-06-12T15:59:26.576]: found dead connection #40 to delete
[HTTP - 2017-06-12T15:59:26.59]: created new connection #41 to '192.168.1.3'
[HTTP - 2017-06-12T15:59:26.59]: sending request over the wire
HTTP.Request:
"""
GET /api/lSsXQfrm7rC32SQ0/lights/ HTTP/1.1
Host: 192.168.1.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
User-Agent: HTTP.jl/0.0.0

"""
[HTTP - 2017-06-12T15:59:26.59]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.665]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.665]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.666]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.667]: waiting for response; will timeout afer 15.0 seconds
[HTTP - 2017-06-12T15:59:26.667]: received bytes from the wire, processing
[HTTP - 2017-06-12T15:59:26.668]: closing connection (no keep-alive)
[HTTP - 2017-06-12T15:59:26.67]: received response
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-type: application/json
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Content-Length: 1
Pragma: no-cache
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: Content-Type

{
"""
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-type: application/json
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Content-Length: 1
Pragma: no-cache
Access-Control-Max-Age: 3600
Access-Control-Allow-Headers: Content-Type

{
"""

julia> String(response)
"{"

@staticfloat
Copy link
Contributor

@cormullion if you could get a packet trace using something like Wireshark, I think that might be helpful here so we can compare exactly what goes back and forth.

@cormullion
Copy link
Author

I will give it a go...

iur

@cormullion
Copy link
Author

I eventually got Wireshark working, but didn't really know what to look for. Will keep at it.

It seems to me that HTTP.get is doing something that gives different length results each time; the equivalent Requests.get looks like it does the same thing each time for the same request:

for i in 1:10
    @show HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String |> length
    sleep(2)
end
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 534
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 56
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 0
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/") |> String) |> length = 132

for i in 1:10
    @show readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length
    sleep(2)
end
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756
readstring(Requests.get("http://192.168.1.3/api/2e4bdae26d734a73aeec4c21d4fd6cb/")) |> length = 24756

@staticfloat
Copy link
Contributor

Is it possible for you to expose this web service to the outside world so that we can hit it as well?

@staticfloat
Copy link
Contributor

staticfloat commented Jul 30, 2017

Regarding Wireshark, if you can just record on your machine while you run those commands in Julia, then save a .pcap file containing all the packet data and post that here, that would be helpful so we can see what is going wrong.

@cormullion
Copy link
Author

cormullion commented Jul 31, 2017

Here's a pcap file made in Wireshark of the following two Julia commands:

julia> readstring(Requests.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/"))

julia> HTTP.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/")

The first one appears to work, the second one only returns some of the information.

@staticfloat
Copy link
Contributor

@quinnj I don't know if you're very familiar with Wireshark, but there's a few interesting nuggets here.

First off, the HTTP request being made by both libraries looks to me to be essentially identical. Sure, there are different User-Agents, and HTTP.jl actually says it can accept application/json whereas Requests.jl does not say it can, but I don't think these are the interesting parts. The interesting part to me is that HTTP.jl does not receive a full response! The TCP stream is cutoff mid-transmission because the server stops sending back. The server stops sending because HTTP.jl sends a TCP RST packet, out of the blue:

screen shot 2017-08-13 at 3 31 59 pm

I don't know why this would happen, but it definitely looks to me like something is calling close() on a socket prematurely. For completeness, here are the TCP streams I got out of Wireshark for the two responses.

@samoconnor
Copy link
Contributor

bump
@cormullion Was this issue resolved?
I'm considering moving AWSCore.jl to HTTP.jl, but @staticfloat 's suggestion that close() is being called prematurely is a worry.
I would rather stick with Requests.jl if there are reliability regressions.

@cormullion
Copy link
Author

I haven't tried it again, but I didn't know whether it was just a Philips Hue interface quirk or a strange entanglement with Http.jl. Will look again next week.

@quinnj
Copy link
Member

quinnj commented Aug 23, 2017

@staticfloat, a big thanks for looking into this. Definitely weird that the premature close seems to be happening. Could you check again w/ latest master? I just merged in an overhaul of the client-side code that aims to be quite a bit more careful w/ error-handling and connection management.

Also, would you be willing to share how you were able to reproduce? I'd like to be able to take a look myself locally.

@cormullion
Copy link
Author

cormullion commented Aug 23, 2017

@quinnj I can try running my original code against the latest (using Pkg.checkout(...master)?) but it won't be before next week when I get back.

Update

On HTTP master and Julia v0.6, this time the same HTTP.get request stall/hangs, so I Ctrl-C out after 10 minutes. Output:

julia> HTTP.get("http://192.168.1.3/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/", verbose=true)
[HTTP - 2017-08-27T09:11:25.778]: using request options: :chunksize=>1048576, :gzip=>true, :connecttimeout=>15.0, :readtimeout=>15.0, :tlsconfig=>nothing, :maxredirects=>5, :allowredirects=>true, :forwardheaders=>false, :retries=>3, :managecookies=>true, :statusraise=>true
[HTTP - 2017-08-27T09:11:25.911]: making GET request for host: '192.168.1.3' and resource: '/api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/'
[HTTP - 2017-08-27T09:11:25.916]: checking if any existing connections to '192.168.1.3' are re-usable
[HTTP - 2017-08-27T09:11:25.927]: found dead connection #1 to delete
[HTTP - 2017-08-27T09:11:25.949]: created new connection #2 to '192.168.1.3'
[HTTP - 2017-08-27T09:11:25.95]: sending request over the wire
HTTP.Request:

GET /api/PHtB7h1lkkDScH9Ln4JJpeke3V3lIqZMV9Ry5PkQ/ HTTP/1.1
Host: 192.168.1.3:80
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,application/json
User-Agent: HTTP.jl/0.0.0


[HTTP - 2017-08-27T09:11:25.973]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.974]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.975]: received bytes from the wire, processing
[HTTP - 2017-08-27T09:11:25.976]: closing connection (no keep-alive)
[HTTP - 2017-08-27T09:11:25.976]: received response
HTTP.Response:
"""
HTTP/1.1 200 OK
Connection: close
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, HEAD
Expires: Mon, 1 Aug 2011 09:00:00 GMT
Access-Control-Allow-Headers: Content-Type
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Access-Control-Allow-Credentials: true
Content-Type: application/json
Access-Control-Allow-Origin: *
Pragma: no-cache
Access-Control-Max-Age: 3600


^CError showing value of type HTTP.Response:
ERROR: InterruptException:
process_events at ./libuv.jl:82 [inlined]
wait() at ./event.jl:216
wait(::Condition) at ./event.jl:27
read(::HTTP.FIFOBuffers.FIFOBuffer, ::Int64) at /Users/me/.julia/v0.6/HTTP/src/fifobuffer.jl:144
macro expansion at /Users/me/.julia/v0.6/HTTP/src/types.jl:309 [inlined]
(::HTTP.##17#18{Base.AbstractIOBuffer{Array{UInt8,1}},HTTP.Response})() at ./task.jl:335
Stacktrace:
 [1] sync_end() at ./task.jl:287
 [2] macro expansion at ./task.jl:303 [inlined]
 [3] body(::Base.AbstractIOBuffer{Array{UInt8,1}}, ::HTTP.Response, ::HTTP.RequestOptions) at /Users/me/.julia/v0.6/HTTP/src/types.jl:304
 [4] #show#19(::HTTP.RequestOptions, ::Function, ::IOContext{Base.Terminals.TTYTerminal}, ::HTTP.Response) at /Users/me/.julia/v0.6/HTTP/src/types.jl:347
 [5] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::MIME{Symbol("text/plain")}, ::HTTP.Response) at /Users/me/.julia/v0.6/OhMyREPL/src/output_prompt_overwrite.jl:8
 [6] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::HTTP.Response) at ./REPL.jl:125
 [7] display(::HTTP.Response) at ./multimedia.jl:194
 [8] eval(::Module, ::Any) at ./boot.jl:235
 [9] print_response(::Base.Terminals.TTYTerminal, ::Any, ::Void, ::Bool, ::Bool, ::Void) at ./REPL.jl:144
 [10] print_response(::Base.REPL.LineEditREPL, ::Any, ::Void, ::Bool, ::Bool) at ./REPL.jl:129
 [11] (::Base.REPL.#do_respond#16{Bool,Base.REPL.##26#36{Base.REPL.LineEditREPL,Base.REPL.REPLHistoryProvider},Base.REPL.LineEditREPL,Base.LineEdit.Prompt})(::Base.LineEdit.MIState, ::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Bool) at ./REPL.jl:646


@cormullion
Copy link
Author

Unrelated problem suggests that I'm better off with Requests at the moment. Closing for now, will revisit later this year.

@samoconnor
Copy link
Contributor

@quinnj Perhaps this issue should be left open (renamed to "HTTP.get request stall/hangs")?
Or is it the same as #85 ?

@cormullion
Copy link
Author

@samoconnor I thought perhaps it was just the Hue light interface causing problems. If it's a more general issue, perhaps it's another datapoint.

@cormullion cormullion reopened this Aug 31, 2017
@samoconnor
Copy link
Contributor

Hi @cormullion, I think its very valuable to have issue reports relating to IOT devices. Testing with the big 3 desktop/server OSs is good, but the variety of different TPC/IP and HTTP implementations that is out there on embedded devices is huge. Embedded devices tend to have different timing behaviour and different message fragmentation behaviour due to slow micros and small RAM size. It's important to handle them gracefully even if they are not all HTTP compliant.

(BTW: I have hue lights here, so I could test stuff if needed...)

@evanfields
Copy link

@cormullion Is it making the request that was hanging, or just printing the response? A few days ago I encountered hanging when printing the Response objects resulting from a HTTP.get to the Hue bridge, but I think that's fixed on latest master.

The issue with subsequent requests getting truncated, apparently due to an early close call, still persists for me.

Maybe we need to pitch in to get quinnj a Hue setup :)

@quinnj
Copy link
Member

quinnj commented Oct 13, 2017

Has anyone been able to try this/seen any issues on latest HTTP master? It'd be great if we had a repro here to dig into.

@cormullion
Copy link
Author

Yes I find the same problems. For example, each time I query the box I get different amounts of the status info returned.

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{\"2\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},
\"type\":\"Extended color light\",\"name\":\"Living room
south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e6:9f:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":"

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{"

julia> HTTP.get("http://192.168.1.3/api/$pw/") |> String
"{\"lights\":{\"2\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended
color light\",\"name\":\"Living room
south\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e6:9f:3d-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":215,\"hue\":13548,\"sat\":200,\"effect\":\"none\",\"xy\":[0.5015,0.4153],\"ct\":443,\"alert\":\"none\",\"colormode\":\"xy\",\"reachable\":true},\"type\":\"Extended
color light\",\"name\":\"Living room
North\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:d0:e5:20-0b\",\"swversion\":\"5.23.1.13452\"},\"5\":{\"state\":{\"on\":true,\"bri\":215,\"alert\":\"none\",\"reachable\":true},\"type\":\"Dimmable
light\",\"name\":\"Hall
kitchen\",\"modelid\":\"LWB004\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:e4:e1:8f-0b\",\"swversion\":\"5.38.2.19136\"},"

julia> Pkg.status("HTTP")
 - HTTP                          0.4.3+             master
 

@quinnj
Copy link
Member

quinnj commented Oct 26, 2017

I just merged a fix for an issue that may be related to this one; in case anyone is willing to try to reproduce this again on current master.

@cormullion
Copy link
Author

I'm not seeing any improvement on my particular problem box... :( Sorry...!

julia> for i in 1:10
           @show HTTP.get("http://192.168.1.3/api/$pw") |> String |> length
           sleep(2)
       end
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 309
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 335
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 336
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 336
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 661
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 11
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 434
(HTTP.get("http://192.168.1.3/api/$(pw)") |> String) |> length = 171

julia> for i in 1:10
           @show readstring(Requests.get("http://192.168.1.3/api/$pw/")) |> length
           sleep(2)
       end
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271
readstring(Requests.get("http://192.168.1.3/api/$(pw)/")) |> length = 18271

julia> Pkg.status("HTTP")
 - HTTP                          0.5.0+             master

@samoconnor
Copy link
Contributor

FWIW, I've just repeated this text against my own Phillips Hue bridge with the same result (a different random amount of data is returned each time).

@samoconnor
Copy link
Contributor

julia> r = HTTP.get("http://192.168.0.103/api/XXXXXXXXXXX/lights"; verbose=true) |> String
[HTTP - 2017-10-26T22:05:54.506]: using request options:
	:chunksize=>nothing
	:gzip=>true
	:connecttimeout=>15.0
	:readtimeout=>15.0
	:tlsconfig=>nothing
	:maxredirects=>5
	:allowredirects=>true
	:forwardheaders=>false
	:retries=>3
	:managecookies=>true
	:statusraise=>true
	:insecure=>false
[HTTP - 2017-10-26T22:05:54.506]: making GET request for host: '192.168.0.103' and resource: '/api/U1SO4C6ezdhW159bihAJNSCZQz9NBotGJqF-bVPr/lights'
[HTTP - 2017-10-26T22:05:54.506]: checking if any existing connections to '192.168.0.103' are re-usable
[HTTP - 2017-10-26T22:05:54.517]: found dead connection #1 to delete
[HTTP - 2017-10-26T22:05:54.558]: created new connection #2 to '192.168.0.103'
[HTTP - 2017-10-26T22:05:54.558]: sending request over the wire

HTTP.Request:

GET /api/U1SO4C6ezdhW159bihAJNSCZQz9NBotGJqF-bVPr/lights HTTP/1.1
Host: 192.168.0.103:80
User-Agent: HTTP.jl/0.0.0


[HTTP - 2017-10-26T22:05:54.571]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 17
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_start_req_or_res
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_start_req_or_res
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:57   ]: onmessagebegin
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = T
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_or_resp_H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = T
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HT
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HTT
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = /
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_HTTP
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_http_major
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = .
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_http_major
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_http_minor
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_http_minor
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_first_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_code
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = K
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_status
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:69   ]: onstatus
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_res_line_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 17
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 18
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[HTTP - 2017-10-26T22:05:54.586]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 402
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = h
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 385
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801573
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801574
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 5
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 5
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = m
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 313
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801591
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801592
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = E
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 294
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801630
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801631
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'l'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 's'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'e'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = x
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '6'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = '6'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 221
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801679
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801680
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = g
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = *
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = i
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 149
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801751
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801752
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = M
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = h
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = P
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = O
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'O'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'O'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 113
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801820
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801821
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = c
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = A
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = l
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = w
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = H
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = d
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = s
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'o'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 44
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801864
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 4984801865
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = C
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parsing header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = o
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = -
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = t
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 6
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = y
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = e
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = :
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:70   ]: onheaderfield
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = a
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_discard_ws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = p
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = 'p'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: parser.header_state = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p]), '\'')) = 'p'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: limit = 16
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_cr) = 4984801896
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Int(p_lf) = 0
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', Char(bytes[p + Int((p_cr - ptr) + 1)]), '\'')) = '\\n'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string('\'', ch, '\'')) = '\\r'
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: lenient = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: isheaderchar(ch) = true
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 1
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:80   ]: onheadervalue2
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 402
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 403
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[HTTP - 2017-10-26T22:05:54.653]: received bytes from the wire, processing
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 856
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\r
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_value_lws
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_header_field_start
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = \\n
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_headers_almost_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: checking for upgrade...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: upgrade = false
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:102  ]: onheaderscomplete
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_headers_done
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: top of main for-loop
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: Base.escape_string(string(ch)) = {
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: onheadervalue 4
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: len = 856
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: p = 857
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: this onbody 3
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: onbody
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(r.body) =
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(bytes[i:j]) = {\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\",
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:103  ]: String(r.body) = {\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\",
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: exiting maybe unfinished...
[DEBUG - HTTP./Users/sam/.julia/v0.6/HTTP/src/parser.jl:165  ]: ParsingStateCode(p_state) = es_body_identity_eof
[HTTP - 2017-10-26T22:05:54.675]: closing connection (no keep-alive)
[HTTP - 2017-10-26T22:05:54.675]: received response
"{\"1\":{\"state\":{\"on\":true,\"bri\":220,\"hue\":61212,\"sat\":210,\"effect\":\"none\",\"xy\":[0.5254,0.2768],\"ct\":497,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Up\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:bf:bd:49-0b\",\"swversion\":\"5.23.1.13452\"},\"2\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":9961,\"sat\":254,\"effect\":\"none\",\"xy\":[0.5715,0.3983],\"ct\":500,\"alert\":\"none\",\"colormode\":\"hs\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Hallway\",\"modelid\":\"LCT001\",\"manufacturername\":\"Philips\",\"uniqueid\":\"00:17:88:01:00:b6:22:32-0b\",\"swversion\":\"5.23.1.13452\"},\"3\":{\"state\":{\"on\":true,\"bri\":254,\"hue\":14910,\"sat\":144,\"effect\":\"none\",\"xy\":[0.4596,0.4105],\"ct\":369,\"alert\":\"none\",\"colormode\":\"ct\",\"reachable\":true},\"type\":\"Extended color light\",\"name\":\"Stairs Down\",\"modelid\":\"LCT001\","

@cormullion
Copy link
Author

exiting maybe unfinished... looks hopeful...?

quinnj added a commit that referenced this issue Oct 26, 2017
…s that don't provide a content-length and we need to rely on the connection being closed to detect eof
@quinnj
Copy link
Member

quinnj commented Oct 26, 2017

@samoconnor thank you thank you thank you for posting the debug output! I think I have a better idea of what's going on here. For cases where the server doesn't send an explicit Content-Length, the protocol states to read until the connection is closed. We were correctly identifying the protocol state (that we should wait until the connection was closed), but we weren't waiting. As soon as we hit that state, we returned, thus leaving bytes on the wire.

If someone could pull #103 and try it out, I'd really appreciate it. Unfortunately httpbin.org is having issues right now, so I'm having a hard time testing this change out, but I'd love to hear if it solves the issue here.

@samoconnor
Copy link
Contributor

Looks stable now:

$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206
$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206
$ julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

But, there is a 4 x slowdown compared to Requests (I assume this is all compilation delay?)

$ time julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m13.763s
user	0m13.641s
sys	0m0.371s
$ time julia -e 'using HTTP; r = HTTP.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m13.903s
user	0m13.644s
sys	0m0.352s
$ time julia -e 'using Requests; r = Requests.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m3.166s
user	0m2.662s
sys	0m0.343s
$ time julia -e 'using Requests; r = Requests.get("http://192.168.0.103/api/XX/lights") |> String |> length |> println'
10206

real	0m3.672s
user	0m2.784s
sys	0m0.336s

@quinnj
Copy link
Member

quinnj commented Oct 27, 2017

Excellent news! I'm going to merge that PR then.

Yes, there's still a bit of a delay in terms of package loading/precompilation, but it's now weighted more heavily to the upfront package loading instead of initial request call (which should benefit applications which would prefer to have a slower upfront load time). There are also open issues that have been slotted for resolution by 1.0, so I'm optimistic that it will all come out nice in time.

@quinnj quinnj closed this as completed in 697e3cb Oct 27, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants