Pointed out by CPAN user MBETHKE.
… issues. Andreas Koenig reported a hash-order issue in Reflex. I couldn't see it, but Matt S. Trout pointed out that it's probably because some trait attributes are too eager. Here I make those traits lazy on his recommendation. Tests pass. Will commend it to the CPAN testers for further evaluation.
This one subclasses HttpClient and adds a pending() attribute to count the requests currently in play.
It's not ideal since POE::Component::Client::HTTP can be overloaded. A more complete consumer would throttle the requests so too many couldn't be started at once.
The attributes being cloned don't change at runtime. A dynamic loop over the attributes in a class is more flexibility than we need right now. Build the code for _clone() at compile time, string-eval it into existence, and then use meta add_method() to put it into place. Future self, please forgive me.
Object destruction can be deferred until after POE::Kernel stops, through nasties like circular references. Diagnostic messages are thrown when they try to unregister their handles too late. Detect that POE::Kernel has stopped, and avoid the moot unregistering. I'm not sure I like this. It feels sloppy. Like it's supporting applications that insist on leaking memory, or something.
Sometimes you're working with a file handle, and sometimes all you have is a descriptor. Fix a bug in the code to support either.
Jason May provided a test case proving that att_active wasn't being passed through to Reflex::Role::Writable. This fixes the issue he reported on irc.perl.org #reflex.
This is adapted from fREW Schmidt's test program posted to irc.perl.org #poe. He asked whether a timer could handle exceptions from its own callbacks, and this is an attempt to implement it in terms of POE's SIGDIE exception handling.