2966
*/
2967
private _enqueuePeerChatCatalogWrite(session: URI, mutate: (entries: IPersistedPeerChat[]) => IPersistedPeerChat[]): Promise<void> {
2969
>
const previous = this._peerChatCatalogWrites.get(key) ?? Promise.resolve();
2970
>
const next = previous
2971
>
.catch(() => { /* a failed prior write must not block later ones */ })
2972
>
.then(() => this._applyPeerChatCatalogWrite(session, mutate));
2973
>
this._peerChatCatalogWrites.set(key, next.finally(() => {
2974
>
if (this._peerChatCatalogWrites.get(key) === next) {
2975
this._peerChatCatalogWrites.delete(key);
2976
}
2978
>
return next;
2979
>
}
2980
2981
private async _applyPeerChatCatalogWrite(session: URI, mutate: (entries: IPersistedPeerChat[]) => IPersistedPeerChat[]): Promise<void> {
2982
>
const ref = await this._sessionDataService.tryOpenDatabase?.(session);
agentService.ts
2983
>
if (!ref) {
2984
return;
2985
}