The important thing to note here is that microservices give you one way to build a graceful failure scenario. You don't get it for free. Often that 500 will propagate all the way back! So you have all the same failure modes + network failure modes!
You could also build a monolith that could handle component level failures, for that matter. Tooling doesn't seem to be as common, though.