POE [search.cpan.org] is already a well-established framework for asynchronous (and even synchronous) work with non-blocking (or, with the right code, blocking) I/O behavior.
I've tried to tackle this myself more than once and failed. I think the problem is that as lazy developers, we're used to figuring out the basics pretty quickly and start working with it. POE is different for me (and probably to other developers too). It's not easy to just grab it and start working. It's an intense framework that requires intense studying to understand it. I'm sitting with a notebook and pen (which I haven't done in a long while) and make summaries of the POD files for POE::Kernel [search.cpan.org], POE::Session [search.cpan.org] and a bunch of others in the middle.
Once I'll be able to explain it to myself, I'll sit and write on how to use it, probably here and post it to perlmonks.