}).done(async function (_response, _textStatus, jqXHR) {

                let jsData: any;
                try {
                    jsData = await parseXml(jqXHR.responseText);
                } catch (err) {
                    log.error(`Error parsing update feed xml: ${err}`);
                    return;
                }

                const updateInfo = transformAtomFeed(jsData);
                if (!dontCache) {
                    lastInfoURLFetchTime = (new Date()).getTime();
                    PreferencesManager.setViewState("lastInfoURLFetchTime", lastInfoURLFetchTime);
                    PreferencesManager.setViewState("updateInfo", updateInfo);
                }
                result.resolve(updateInfo);

            }).fail(function (jqXHR, status, error) {
            .done(function (allUpdates: UpdateFeedInfo = []) {

                const semver = node.require("semver");
                const currentVersion = node.require("./package.json").version;

                // Get all available updates
                const availableUpdates = allUpdates.filter((x) => semver.gt(x.versionString, currentVersion));

                // When running directly from GitHub source (as opposed to
                // an installed build), _buildNumber is 0. In this case, if the
                // test is not forced, don't show the update notification icon or
                // dialog.
                if (_buildNumber === 0 && !force) {
                    result.resolve();
                    return;
                }

                if (availableUpdates && availableUpdates.length > 0) {
                    // Always show the "update available" icon if any updates are available
                    const $updateNotification = $("#update-notification");

                    $updateNotification.css("display", "block");

                    $updateNotification.on("click", function () {
                        // Block the click until the Notification Dialog opens
                        if (!_addedClickHandler) {
                            _addedClickHandler = true;
                            checkForUpdate(true);
                        }
                    });

                    // Only show the update dialog if force = true, or if the user hasn't been
                    // alerted of this update
                    if (force || availableUpdates[0].buildNumber >  lastNotifiedBuildNumber) {
                        _showUpdateNotificationDialog(availableUpdates);

                        // Update prefs with the last notified build number
                        lastNotifiedBuildNumber = availableUpdates[0].buildNumber;
                        // Don't save prefs is we have overridden values
                        if (!usingOverrides) {
                            PreferencesManager.setViewState("lastNotifiedBuildNumber", lastNotifiedBuildNumber);
                        }
                    }
                } else if (force) {
                    // No updates are available. If force == true, let the user know.
                    Dialogs.showModalDialog(
                        DefaultDialogs.DIALOG_ID_ERROR,
                        Strings.NO_UPDATE_TITLE,
                        Strings.NO_UPDATE_MESSAGE
                    );
                }

                if (oldValues) {
                    if (oldValues.hasOwnProperty("_buildNumber")) {
                        _buildNumber = oldValues._buildNumber;
                    }
                    if (oldValues.hasOwnProperty("lastNotifiedBuildNumber")) {
                        lastNotifiedBuildNumber = oldValues.lastNotifiedBuildNumber;
                    }
                }
                result.resolve();
            })
 /**
  * Calculate state of notification everytime registries are downloaded - no matter who triggered the download
  */
 function _onRegistryDownloaded() {
     const availableUpdates = ExtensionManager.getAvailableUpdates();
     PreferencesManager.setViewState("extensionUpdateInfo", availableUpdates);
     PreferencesManager.setViewState("lastExtensionRegistryCheckTime", (new Date()).getTime());
     $("#toolbar-extension-manager").toggleClass("updatesAvailable", availableUpdates.length > 0);
 }