diff --git a/src/vs/editor/contrib/documentSymbols/outlineModel.ts b/src/vs/editor/contrib/documentSymbols/outlineModel.ts index 071cba7b1abdce6a8a7a013263a0aaf958088247..c40a1de46ed9a638b707c01774c2f586fb69f994 100644 --- a/src/vs/editor/contrib/documentSymbols/outlineModel.ts +++ b/src/vs/editor/contrib/documentSymbols/outlineModel.ts @@ -209,10 +209,13 @@ export class OutlineModel extends TreeElement { data.count += 1; return new TPromise((resolve, reject) => { - data.promise.then(resolve, reject); + data.promise.then(resolve, err => { + OutlineModel._requests.delete(key); // don't cache failure/cancelation + reject(err); + }); }, () => { + // last -> cancel provider request if (--data.count === 0) { - // last -> cancel provider request data.promise.cancel(); } });