type Falsy = false | 0 | '' | null | undefined; export interface Options { timeout?: number; timeoutMessage?: string; } /** Wait for the provided callback to return a truthy value. This does not leverage `settled()`, and as such can be used to manage async while _not_ settled (e.g. "loading" or "pending" states). @public @param {Function} callback the callback to use for testing when waiting should stop @param {Object} [options] options used to override defaults @param {number} [options.timeout=1000] the maximum amount of time to wait @param {string} [options.timeoutMessage='waitUntil timed out'] the message to use in the reject on timeout @returns {Promise} resolves with the callback value when it returns a truthy value @example