When you develop your services for distributed environments, you must take into consideration that invocations of the services will be performed over the network. As a result, the application must be prepared to deal with network failures, which will certainly happen.
This problem is further enhanced by the fact that a single misbehaving service can poison a large number of services. Let's take a look at the number of scenarios, that can make this possible.