Is it worth making this interface into Query::mapResults($func) and Query::reduceResults($func). We could turn that into a queue of map or reduce tasks. I don't think mapping and reducing will always need to happen at the same time, and presently it is not possible to supply only a reducer.