If output collection is not sharded it properly errors, but if sharded then it returns with empty results.
it is easy to reproduce issue if using "replace" in conjunction with "nonAtomic" which errors.
Source of issue seems to be that MR code used to spawn Future objects and then check on status,
but now that code has been buried into a call like:
SHARDED->commandOp( dbName, shardedCommand, 0, fullns, q, results );
That call seems to not properly report the exception.