diff --git a/lib/media/drm_engine.js b/lib/media/drm_engine.js index e3a84bfb8b..3c6e3e6295 100644 --- a/lib/media/drm_engine.js +++ b/lib/media/drm_engine.js @@ -1506,6 +1506,9 @@ shaka.media.DrmEngine = class { const req = this.playerInterface_.netEngine.request(requestType, request); response = await req.promise; } catch (error) { + if (this.destroyer_.destroyed()) { + return; + } // Request failed! goog.asserts.assert(error instanceof shaka.util.Error, 'Wrong NetworkingEngine error type!'); @@ -1514,9 +1517,20 @@ shaka.media.DrmEngine = class { shaka.util.Error.Category.DRM, shaka.util.Error.Code.LICENSE_REQUEST_FAILED, error); - this.onError_(shakaErr); - if (metadata && metadata.updatePromise) { - metadata.updatePromise.reject(shakaErr); + if (this.activeSessions_.size == 1) { + this.onError_(shakaErr); + if (metadata && metadata.updatePromise) { + metadata.updatePromise.reject(shakaErr); + } + } else { + if (metadata && metadata.updatePromise) { + metadata.updatePromise.reject(shakaErr); + } + this.activeSessions_.delete(session); + if (this.areAllSessionsLoaded_()) { + this.allSessionsLoaded_.resolve(); + this.keyStatusTimer_.tickAfter(/* seconds= */ 0.1); + } } return; }