Actually it wasn't an issue with this code, it works. *sheepish grin*
What was causing the issue was Carp.. I was using it to croak if the method didn't exist.. it seems it's not friendly with our code and was trying to execute the nonexistant AUTOLOAD method.