From 2e43f7f32521357afcaaa70e576fcbda8d869e14 Mon Sep 17 00:00:00 2001 From: Christian Walther Date: Wed, 25 Sep 2019 14:31:46 +0200 Subject: [PATCH 1/2] When a ref cannot be resolved, don't get stuck and render nothing, but render what is available. --- src/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 5e40ba4..eced32a 100644 --- a/src/index.js +++ b/src/index.js @@ -404,13 +404,13 @@ const highlight = false; var refs = {}; var get_ref = function(uri) { - return new Promise( resolve => { + return new Promise( (resolve, reject) => { get_document( uri.clone().hash('').toString() ).then(function(schema){ refs[uri.toString()] = uri.hash() ? jsonpointer.get( schema, uri.hash() ) : schema; }).then(function(){ debug('get_ref'); resolve(); - }); + }, reject); }); }; From aeb3ff81859393f548329f857ce56b416235e466 Mon Sep 17 00:00:00 2001 From: Christian Walther Date: Wed, 25 Sep 2019 14:32:49 +0200 Subject: [PATCH 2/2] Avoid unhandled promise rejections when refs cannot be resolved. --- src/index.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index eced32a..1bbad72 100644 --- a/src/index.js +++ b/src/index.js @@ -543,11 +543,15 @@ const highlight = false; // use the normalized uri parentObject.update( uri.toString() ); - debug(get_ref(uri)); - get_ref( uri ).finally( () => { + var refp = get_ref(uri); + debug(refp); + refp.finally( () => { throttled_render(); resolve(); - }); + }) + // avoid "unhandled rejection" error - the output may be redundant as the + // browser probably already logged the failure, but better be explicit + .catch(e => { console.warn("Unable to resolve $ref " + uri.toString() + ":", e); }); }); }