402
403
private _enqueue(address: string, canonicalUri: URI, mode: AgentHostPermissionMode): Promise<void> {
405
>
r.address === address && r.mode === mode && extUri.isEqual(r.uri, canonicalUri));
406
>
if (existing) {
407
return existing.deferred.p;
408
}
410
>
const deferred = new DeferredPromise<void>();
411
>
const request: IInternalPendingRequest = {
412
>
id: generateUuid(),
413
>
address,
414
>
uri: canonicalUri,
415
>
mode,
416
>
deferred,
417
>
allow: () => this._resolve(request, 'memory'),
418
>
allowAlways: () => this._resolve(request, 'persist'),
419
>
deny: () => {
420
this._dropPending(request);
421
deferred.error(new CancellationError());
422
},
424
>
this._pending.set([...this._pending.get(), request], undefined);
425
>
return deferred.p;
426
>
}
427
428
private _resolve(request: IInternalPendingRequest, scope: 'memory' | 'persist'): void {