diff --git a/src/vs/workbench/services/search/node/rawSearchService.ts b/src/vs/workbench/services/search/node/rawSearchService.ts index ca61885074b..48e8dbe3191 100644 --- a/src/vs/workbench/services/search/node/rawSearchService.ts +++ b/src/vs/workbench/services/search/node/rawSearchService.ts @@ -67,14 +67,21 @@ export class SearchService implements IRawSearchService { } public textSearch(config: IRawSearch): Event { - let promise: CancelablePromise; + let promise: CancelablePromise; const emitter = new Emitter({ onFirstListenerDidAdd: () => { promise = createCancelablePromise(token => { - return (config.useRipgrep ? this.ripgrepTextSearch(config, p => emitter.fire(p), token) : this.legacyTextSearch(config, p => emitter.fire(p), token)) - .then(c => emitter.fire(c), err => emitter.fire({ type: 'error', error: { message: err.message, stack: err.stack } })); + return (config.useRipgrep ? this.ripgrepTextSearch(config, p => emitter.fire(p), token) : this.legacyTextSearch(config, p => emitter.fire(p), token)); }); + + promise.then( + c => emitter.fire(c), + err => { + if (!isPromiseCanceledError(err)) { + emitter.fire({ type: 'error', error: { message: err.message, stack: err.stack } }); + } + }); }, onLastListenerRemove: () => { promise.cancel();