Switch expressions and is patterns
A JS switch is a statement: it falls through, needs break, and produces nothing. A C# switch expression is an expression: it evaluates to a value, has no fall-through, and each arm is pattern => result. You'll use it to turn a value into another value, and it reads top to bottom like a lookup table.
Notice you're matching on the type of the error (EntityNotFound e), binding it to e in one move. That's the is pattern: x is EntityNotFound e both tests the type and gives you a typed variable, replacing the TS if (x instanceof EntityNotFound) plus a cast.
The _ arm is the discard: the catch-all. In a mapping like the HTTP one above, a sensible default is fine. But when you're switching over a closed set of domain values, a discard that silently returns a default is dangerous, because adding a new member later maps it to the wrong thing with no warning. Fusion anti-pattern #8 is explicit: in that case, the discard should throw.
Try it yourself
Read a real result-to-HTTP switch
See the type-matching switch that every Fusion endpoint leans on.
Tick every step to confirm you did it.
The discard arm
You write a switch expression over a SmartEnum of disruption reasons and add a _ => arm that returns 0m. What's the Fusion objection?