No, that isn't quite right. We'll only enter this case if the connection succeeds once, and then later becomes disconnected. This would happen if the node process crashed. If we're in this state, the user will get the error immediately. The problem should be "fixed" (new process running) in a matter of seconds. So, I think the error is correct.

I've updated the comment to explain that a little more clearly.

In the case of no initial connection (which is what has the 30 second timeout), we should use file urls. I've changed canServe so that it returns false (immediately) if we don't yet have a connection (which means the user will get file urls immediately).

So, this is now resolved (as soon as I push).