Some callers merely warn to the log if the Runner reports errors while others don't even check for errors. Both of these will lead to incorrect results being returned to the user rather than reporting an error. Searching the code for PlanExecutor::ADVANCED should show all loops that iterate a runner.
Incomplete list of things that ignore errors:
- delete (will report success even though some matching docs won't be deleted)
- dbhash (will return the incorrect hash)
- distinct (will return an incomplete list of distinct values, with no indication of incompleteness)
- findAndModify (can upsert even if something already matches)