The code example was meant to illustrate the pattern while still being something that's semi-reasonable to write in a web form. Obviously in real life you'd want to do something with p, q, and r, which could make the chain of ANDs [not a pattern I am averse to in general] a bit more clumsy. YMMV.
I guess the other point I am trying to make is that success and failure can hit mostly the same code. Your snippet only checks for failure.
Although in your example, if the code really was doing only that much, I'd recognise the ||/&& "ladder" structure and write it like this instead: