anchor.diff:      return Uri.parse(Uri.decodeComponent(fileUrl));
     }
   
  +  /**
  +   * Throws an exception when the request fails.
  +   */
     bool _requestIpnsAvailability(String host) {
       var req = new HttpRequest();
       req.open('GET', 'http://${settings.host}:${settings.port}/ipns/${host}', async: false);
   
  -    bool ipnsAvailable = false;
  -    try {
  -      req.send();
  -      ipnsAvailable = req.status < 400;
  -    } catch (_) {
  -      _enableErrorMode();
  -    }
  -
  -    return ipnsAvailable;
  +    req.send();
  +    return req.status < 400;
     }
   
     void _setIpfsRequestErrorListener() {
  +    dartifyChromeEvent(chromeWebRequest, 'onErrorOccurred')
  +        .callMethod('removeListener', [_onErrorAction]);
       dartifyChromeEvent(chromeWebRequest, 'onErrorOccurred')
           .callMethod('addListener', [
             _onErrorAction,
  
positive.code: 
    void _initSettingsListener() {
      settings.changes.listen((_) {
        dartifyChromeEvent(chromeWebRequest, 'onErrorOccurred')
            .callMethod('removeListener', [_onErrorAction]);
        _setIpfsRequestErrorListener();
        _errorMode = false;
      });
    }
  
  
negative.code:           redirectUrl = ipnsUrl;
          }
        } else {
          try {
            var ipnsAvailable = _requestIpnsAvailability(url.host);
            _domainCache[cacheKey] = new DomainCacheItem(new DateTime.now(), ipnsAvailable);
            if (ipnsAvailable) {
              redirectUrl = ipnsUrl;
            }
          } catch (_) {
            _enableErrorMode();
          }
        }
      }
  