in src/async.ts [119:143]
public trigger(task: ITask<T>, delay: number = this.defaultDelay): Promise<T> {
this.task = task;
this.cancelTimeout();
if (!this.completionPromise) {
this.completionPromise = new Promise<T>((resolve, _reject) => {
this.onResolve = resolve;
}).then(() => {
this.completionPromise = null;
this.onResolve = null;
var result = this.task();
this.task = null;
return result;
});
}
this.timeout = setTimeout(() => {
this.timeout = null;
this.onResolve(null);
}, delay);
return this.completionPromise;
}