async _getNetworkPromise()

in workbox-v4.3.1/workbox-strategies.dev.js [611:681]


    async _getNetworkPromise({
      timeoutId,
      request,
      logs,
      event
    }) {
      let error;
      let response;

      try {
        response = await fetchWrapper_mjs.fetchWrapper.fetch({
          request,
          event,
          fetchOptions: this._fetchOptions,
          plugins: this._plugins
        });
      } catch (err) {
        error = err;
      }

      if (timeoutId) {
        clearTimeout(timeoutId);
      }

      {
        if (response) {
          logs.push(`Got response from network.`);
        } else {
          logs.push(`Unable to get a response from the network. Will respond ` + `with a cached response.`);
        }
      }

      if (error || !response) {
        response = await this._respondFromCache({
          request,
          event
        });

        {
          if (response) {
            logs.push(`Found a cached response in the '${this._cacheName}'` + ` cache.`);
          } else {
            logs.push(`No response found in the '${this._cacheName}' cache.`);
          }
        }
      } else {
        // Keep the service worker alive while we put the request in the cache
        const responseClone = response.clone();
        const cachePut = cacheWrapper_mjs.cacheWrapper.put({
          cacheName: this._cacheName,
          request,
          response: responseClone,
          event,
          plugins: this._plugins
        });

        if (event) {
          try {
            // The event has been responded to so we can keep the SW alive to
            // respond to the request
            event.waitUntil(cachePut);
          } catch (err) {
            {
              logger_mjs.logger.warn(`Unable to ensure service worker stays alive when ` + `updating cache for '${getFriendlyURL_mjs.getFriendlyURL(request.url)}'.`);
            }
          }
        }
      }

      return response;
    }