I did test the case there the actual HTTP service on an origin host goes down and that works great. Turn out, when that happens, a packet is sent indicating the port is not listening, which gives an instant error. However, when the server simply goes away, it causes all sorts of pain. Since the origin server is not up to send that packet, we fall into TCP timeout land. The solution to this was to catch the error condition and fire a timeout after, in this case 2 seconds, so that we can simply serve the stale cached content. If the origin server is slow, I highly suggest setting this timeout higher.