timeout for provideDebugAdapterTracker; fixes #59408

This commit is contained in:
Andre Weinand
2018-10-29 18:13:05 +01:00
parent ec8eb95d70
commit 2635578983

View File

@@ -611,11 +611,22 @@ export class ExtHostDebugService implements ExtHostDebugServiceShape {
.filter(pair => pair.provider.provideDebugAdapterTracker && (pair.type === type || pair.type === '*'))
.map(pair => asThenable(() => pair.provider.provideDebugAdapterTracker(session, folder, config, CancellationToken.None)).then(p => p).catch(err => null));
return Promise.all(promises).then(trackers => {
trackers = trackers.filter(t => t); // filter null
if (trackers.length > 0) {
return new MultiTracker(trackers);
}
return Promise.race([
Promise.all(promises).then(trackers => {
trackers = trackers.filter(t => t); // filter null
if (trackers.length > 0) {
return new MultiTracker(trackers);
}
return undefined;
}),
new Promise((resolve, reject) => {
const timeout = setTimeout(() => {
clearTimeout(timeout);
reject(new Error('timeout'));
}, 1000);
})
]).catch(err => {
// ignore errors
return undefined;
});
}