Can the $mapper and $reducer be protected methods in the class instead please? This make stack traces more readable, and way easier to extend the class and just modify part of the behavior.

While I'm personally a huge fan of closures, I think the framework itself should avoid using them too heavily, as stack traces gets super useless, this include tools like NewRelic too. Giving them a name makes stacks readable and the class easy to extend.

Afaik the MapReduce takes anything Callbable anyway, so there isn't much win from inline closures anyway imo