Faults can be injected by a proxy between client and server, by a wrapper around the HTTP client in a unit test, or by killing processes. The goal is to find missing timeouts, unsafe retries and wrong assumptions before production does.