diff --git a/src/vs/workbench/services/search/node/fileSearch.ts b/src/vs/workbench/services/search/node/fileSearch.ts index 485896d1e87..6d8595e7fad 100644 --- a/src/vs/workbench/services/search/node/fileSearch.ts +++ b/src/vs/workbench/services/search/node/fileSearch.ts @@ -147,7 +147,7 @@ export class FileWalker { // For each root folder flow.parallel(rootFolders, (rootFolder: string, rootFolderDone: (err?: Error) => void) => { - traverse.call(this, rootFolder, onResult, (err?: Error) => { + this.call(traverse, this, rootFolder, onResult, (err?: Error) => { if (err) { if (isNodeTraversal) { rootFolderDone(err); @@ -168,6 +168,14 @@ export class FileWalker { }); } + private call(fun: Function, that: any, ...args: any[]): void { + try { + fun.apply(that, args); + } catch (e) { + args[args.length - 1](e); + } + } + private findTraversal(rootFolder: string, onResult: (result: IRawFileMatch) => void, cb: (err?: Error) => void): void { const isMac = platform.isMacintosh; let done = (err?: Error) => {