Okay, I have an implementation that I like now, and so I'll send it out to wine-patches when I can get my ObtainUserAgentString patches in. On the plus side the WINEDEBUG=+wininet matches very very closely now between my implementation and native (pretty much exactly for the querydataavailable/read loops) and I tested a bunch of error cases too and they all conform as well. I will still need to implement native redirection support and POST handling, but i think the patch I am going to send out is a good start.
Misha