This generates an incorrect fall-through when A is "a" and FOO returns NIL:

(defun blah (a)
  (case a
    ("a" (when (foo) (return-from blah 111)))
    ("b" t)))

Note that if you replace WHEN with IF, it works.