BEEP is another take on the async streams problem. It even has an implementation on CPAN, Net::BEEP::Lite, although last I looked it only handled one stream at a time. O'Reilly's BEEP book is a good read if you're interested. Even though I'll probably never use BEEP I'm glad I read it.