diff --git a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts index 2eaf1a67e2e..f2ee377a15a 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadUrls.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadUrls.ts @@ -24,7 +24,7 @@ class ExtensionUrlHandler implements IURLHandler { return TPromise.as(false); } - return this.proxy.$handleExternalUri(this.handle, uri).then(() => true); + return TPromise.wrap(this.proxy.$handleExternalUri(this.handle, uri)).then(() => true); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 8e05d5c666b..53a68deeee4 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -466,7 +466,7 @@ export interface MainThreadUrlsShape extends IDisposable { } export interface ExtHostUrlsShape { - $handleExternalUri(handle: number, uri: UriComponents): TPromise; + $handleExternalUri(handle: number, uri: UriComponents): Thenable; } export interface MainThreadWorkspaceShape extends IDisposable { diff --git a/src/vs/workbench/api/node/extHostUrls.ts b/src/vs/workbench/api/node/extHostUrls.ts index b7e4552fc97..f8b7b37f9f4 100644 --- a/src/vs/workbench/api/node/extHostUrls.ts +++ b/src/vs/workbench/api/node/extHostUrls.ts @@ -8,7 +8,7 @@ import { MainContext, IMainContext, ExtHostUrlsShape, MainThreadUrlsShape } from import { URI, UriComponents } from 'vs/base/common/uri'; import { TPromise } from 'vs/base/common/winjs.base'; import { toDisposable } from 'vs/base/common/lifecycle'; -import { asWinJsPromise } from 'vs/base/common/async'; +import { onUnexpectedError } from 'vs/base/common/errors'; export class ExtHostUrls implements ExtHostUrlsShape { @@ -41,14 +41,17 @@ export class ExtHostUrls implements ExtHostUrlsShape { }); } - $handleExternalUri(handle: number, uri: UriComponents): TPromise { + $handleExternalUri(handle: number, uri: UriComponents): Thenable { const handler = this.handlers.get(handle); if (!handler) { return TPromise.as(null); } - - asWinJsPromise(_ => handler.handleUri(URI.revive(uri))); + try { + handler.handleUri(URI.revive(uri)); + } catch (err) { + onUnexpectedError(err); + } return TPromise.as(null); }