summaryrefslogtreecommitdiff
path: root/modules/esm/gi.js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/esm/gi.js')
-rw-r--r--modules/esm/gi.js19
1 files changed, 13 insertions, 6 deletions
diff --git a/modules/esm/gi.js b/modules/esm/gi.js
index 126ce7e7..b49cf120 100644
--- a/modules/esm/gi.js
+++ b/modules/esm/gi.js
@@ -8,17 +8,24 @@ const Gi = {
if (namespace === 'versions')
throw new Error('Cannot import namespace "versions", use the version parameter of Gi.require to specify versions.');
+ let oldVersion = gi.versions[namespace];
if (version !== undefined)
gi.versions[namespace] = version;
- const module = gi[namespace];
+ try {
+ const module = gi[namespace];
- if (version !== undefined && version !== module.__version__) {
- throw new Error(`Version ${module.__version__} of GI module ${
- namespace} already loaded, cannot load version ${version}`);
- }
+ if (version !== undefined && version !== module.__version__) {
+ throw new Error(`Version ${module.__version__} of GI module ${
+ namespace} already loaded, cannot load version ${version}`);
+ }
- return module;
+ return module;
+ } catch (error) {
+ // Roll back change to versions object if import failed
+ gi.versions[namespace] = oldVersion;
+ throw error;
+ }
},
};
Object.freeze(Gi);