It's kind of confusing to have two `badResult` functions in this file. Maybe instead of `badResult`, this arg could be called `elseResult` or something to indicate that it is used when the predicate is false.