Fix scope issue where cachedResponse wasn't accessible in catch block. Now if fetch fails, we first check if we have a cached response and return it. If no cache exists, we let the error propagate so the browser can handle it gracefully.