From 07ed1013b15cb0ac995cc75d2dd0e67be6127a96 Mon Sep 17 00:00:00 2001 From: Fabian Schindler Date: Fri, 19 Feb 2021 09:27:53 +0100 Subject: [PATCH] Adding error handling on block requests --- src/source/blockedsource.js | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/source/blockedsource.js b/src/source/blockedsource.js index ca4908fa..b9f92212 100644 --- a/src/source/blockedsource.js +++ b/src/source/blockedsource.js @@ -114,19 +114,22 @@ export class BlockedSource extends BaseSource { for (const blockId of group.blockIds) { // make an async IIFE for each block const blockRequest = (async () => { - const response = (await groupRequests)[groupIndex]; - const blockOffset = blockId * this.blockSize; - const o = blockOffset - response.offset; - const t = Math.min(o + this.blockSize, response.data.byteLength); - const data = response.data.slice(o, t); - const block = new Block( - blockOffset, - data.byteLength, - data, - ); - this.blockRequests.delete(blockId); - this.blockCache.set(blockId, block); - return block; + try { + const response = (await groupRequests)[groupIndex]; + const blockOffset = blockId * this.blockSize; + const o = blockOffset - response.offset; + const t = Math.min(o + this.blockSize, response.data.byteLength); + const data = response.data.slice(o, t); + const block = new Block( + blockOffset, + data.byteLength, + data, + ); + this.blockCache.set(blockId, block); + return block; + } finally { + this.blockRequests.delete(blockId); + } })(); this.blockRequests.set(blockId, blockRequest); }