diff --git a/src/vs/base/common/async.ts b/src/vs/base/common/async.ts index 6805a79b334..54339b81ffe 100644 --- a/src/vs/base/common/async.ts +++ b/src/vs/base/common/async.ts @@ -7,6 +7,26 @@ import * as errors from 'vs/base/common/errors'; import { Promise, TPromise, ValueCallback, ErrorCallback, ProgressCallback } from 'vs/base/common/winjs.base'; import * as platform from 'vs/base/common/platform'; +import {CancellationToken, CancellationTokenSource} from 'vs/base/common/cancellation'; + + +function isThenable(obj: any): obj is Thenable { + return obj && typeof (>obj).then === 'function'; +} + +export function asWinJsPromise(callback: (token: CancellationToken) => T | Thenable): TPromise { + let source = new CancellationTokenSource(); + return new TPromise((resolve, reject) => { + let item = callback(source.token); + if (isThenable(item)) { + item.then(resolve, reject); + } else { + resolve(item); + } + }, () => { + source.cancel(); + }); +} export interface ITask { (): T; diff --git a/src/vs/workbench/api/common/extHostLanguageFeatures.ts b/src/vs/workbench/api/common/extHostLanguageFeatures.ts index e9e1296fb92..afa6c8671bf 100644 --- a/src/vs/workbench/api/common/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/common/extHostLanguageFeatures.ts @@ -31,24 +31,7 @@ import {FormatRegistry, FormatOnTypeRegistry} from 'vs/editor/contrib/format/com import {CodeLensRegistry} from 'vs/editor/contrib/codelens/common/codelens'; import {ParameterHintsRegistry} from 'vs/editor/contrib/parameterHints/common/parameterHints'; import {SuggestRegistry} from 'vs/editor/contrib/suggest/common/suggest'; - -function isThenable(obj: any): obj is Thenable { - return obj && typeof (>obj).then === 'function'; -} - -function asWinJsPromise(callback: (token: vscode.CancellationToken) => T | Thenable): TPromise { - let source = new CancellationTokenSource(); - return new TPromise((resolve, reject) => { - let item = callback(source.token); - if (isThenable(item)) { - item.then(resolve, reject); - } else { - resolve(item); - } - }, () => { - source.cancel(); - }); -} +import {asWinJsPromise} from 'vs/base/common/async'; // --- adapter