I've raised this issue in radar 9650785 and I believe this is an incorrect behavior of the OS.
@Quinn: I understand your point, but the PAC standard is pretty explicit in these terms, and the current way iOS is handling it is not in line with what is expected by sys admins and also works differently than essentially all other browsers and operating systems I know of.
It should be up to the PAC author to decide how the connection behaves when the proxy fails.
If I want the request to work at all cost and skip the proxy when it's offline: findProxyForURL() returns "PROXY X.Y.Z; DIRECT". If I want it to fail when X.Y.Z isn't working, findProxyForURL() returns "PROXY X.Y.Z".
I don't see why iOS changed the behavior to assume "DIRECT" to be a default fallback for every connection.