That's a really good question. I would say yes, although in practice complex distributed designs often don't design or handle for all the failure scenarios.
Eg: cascading performance problems, related failure domains, etc...
Elegant designs are always best!
(Remember that CAP theorem for example, doesn't guarantee you'll never be down... In fact, if you *roughly* fail nodes at a rate N that is larger than the rate M that you add new ones, then eventually you'll be definitely down!)