You need to use something that uses non-blocking IO using the POE internals. While LWP::UserAgent uses non-blocking IO, it uses select() internally rather than letting the POE kernel do the work. Try using
POE::Component::HTTP::Client instead, which does exactly what you want.