If You Send a Request and Get No Response, You Cannot Tell Why Figure 9-1 in three timelines: (a) the request is lost · (b) the node is down · (c) the response is lost — the client cannot tell them apart (a) The request is lost on the network Client Remote Node request dropped never arrives — the node is healthy and waiting timeout fires: still no reply the client only observes "no response yet" (b) The remote node has crashed Client Remote Node request crashed / powered off the request may be lost, queued, or delivered to nobody timeout fires: still no reply the client only observes "no response yet" (c) The node works, but the response is lost Client Remote Node request — applied successfully response lost the write already happened timeout fires: still no reply the client only observes "no response yet" The only fact the client has "No reply has arrived yet." A timeout is a guess, not proof of failure — and in case (c) the effect is already applied, so a blind retry can do the work twice.