From 1702cafa1c2bb3044f24497ef6eab7869f1edcc6 Mon Sep 17 00:00:00 2001 From: Jim Phillips Date: Wed, 2 Aug 2023 10:11:19 -0500 Subject: [PATCH] Cache fetch promise and clear on error --- src/geotiffimage.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/geotiffimage.js b/src/geotiffimage.js index 7b889262..2918926f 100644 --- a/src/geotiffimage.js +++ b/src/geotiffimage.js @@ -382,12 +382,12 @@ class GeoTIFFImage { offset = this.fileDirectory.StripOffsets[index]; byteCount = this.fileDirectory.StripByteCounts[index]; } - const slice = (await this.source.fetch([{ offset, length: byteCount }], signal))[0]; let request; if (tiles === null || !tiles[index]) { // resolve each request by potentially applying array normalization request = (async () => { + const slice = (await this.source.fetch([{ offset, length: byteCount }], signal))[0]; let data = await poolOrDecoder.decode(this.fileDirectory, slice); const sampleFormat = this.getSampleFormat(); const bitsPerSample = this.getBitsPerSample(); @@ -408,6 +408,11 @@ class GeoTIFFImage { // set the cache if (tiles !== null) { tiles[index] = request; + request.catch(() => { + if ( tiles[index] === request ) { + tiles[index] = null; + } + }); } } else { // get from the cache