let nextHandle = 1; const tasksByHandle: { [handle: string]: () => void } = {}; function runIfPresent(handle: number) { const cb = tasksByHandle[handle]; if (cb) { cb(); } } export const Immediate = { setImmediate(cb: () => void): number { const handle = nextHandle++; tasksByHandle[handle] = cb; Promise.resolve().then(() => runIfPresent(handle)); return handle; }, clearImmediate(handle: number): void { delete tasksByHandle[handle]; }, };