diff --git a/xmcl-runtime-api/src/util/mutex.ts b/xmcl-runtime-api/src/util/mutex.ts index 3a7a04b97..283c085dd 100644 --- a/xmcl-runtime-api/src/util/mutex.ts +++ b/xmcl-runtime-api/src/util/mutex.ts @@ -34,10 +34,14 @@ export class ReadWriteLock { private async processIfIdle() { if (this.status === LockStatus.Idle) { while (this.queue.length > 0) { - const [operation, release] = this.queue.shift()! - this.release = release - this.status = release ? LockStatus.Reading : LockStatus.Writing - await operation() + try { + const [operation, release] = this.queue.shift()! + this.release = release + this.status = release ? LockStatus.Reading : LockStatus.Writing + await operation() + } catch { + // no-op + } } this.status = LockStatus.Idle }