mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-14 05:14:54 +00:00
20 lines
461 B
TypeScript
20 lines
461 B
TypeScript
import { Logger } from '@nestjs/common';
|
|
|
|
import { retryable } from '../utils/promise';
|
|
|
|
export class Lock implements AsyncDisposable {
|
|
private readonly logger = new Logger(Lock.name);
|
|
|
|
constructor(private readonly dispose: () => Promise<void>) {}
|
|
|
|
async release() {
|
|
await retryable(() => this.dispose()).catch(e => {
|
|
this.logger.error('Failed to release lock', e);
|
|
});
|
|
}
|
|
|
|
async [Symbol.asyncDispose]() {
|
|
await this.release();
|
|
}
|
|
}
|