--- /dev/null
+/**
+ * Copyright (c) 2019, Microsoft Corporation (MIT License).
+ */
+
+export function pollUntil(cb: () => boolean, timeout: number, interval: number): Promise<void> {
+ return new Promise<void>((resolve, reject) => {
+ const intervalId = setInterval(() => {
+ if (cb()) {
+ clearInterval(intervalId);
+ clearTimeout(timeoutId);
+ resolve();
+ }
+ }, interval);
+ const timeoutId = setTimeout(() => {
+ clearInterval(intervalId);
+ if (cb()) {
+ resolve();
+ } else {
+ reject();
+ }
+ }, timeout);
+ });
+}