When AnyEvent needs a pipe it uses portable_pipe which usually maps to pipe, but on Windows it creates a pair of TCP sockets (same with socketpair / portable_socketpair), slow but works better (for AnyEvent's purposes) than pipe on windows.
Thanks for pointer. I briefly skimmed through the code but I am not all that familiar with HTTP details to understand. The pipes are not only thing broken on Windows ... ;-)