Did you mean for this comment to refer to the above issue of wrapping the predicate selector call in a try/catch? This comment refers to the case where the multimethod tries to match the selector type to either a vector, a class name, or a predicate function, and fails. When it can't match the selector type (like if someone tried to call with-handler and passes a list or a map as the selector or something), it falls back to the multimethod default which is just to return false.

This makes it look to slingshot like no matching selector was found. That's different than how slingshot handles the case of an unrecognized or malformed selector, which is to throw+ a slingshot exception indicating the poorly formed selector.