+ const timeoutTimestampMs = Date.now() + timeoutMs
+ // eslint-disable-next-line no-empty
+ do {} while (Date.now() < timeoutTimestampMs)
+}
+
+/**
+ * @param timeoutMs
+ */
+async function sleepTimeoutBusyWait (timeoutMs) {
+ const timeoutTimestampMs = Date.now() + timeoutMs
+ do {
+ await sleep(interval)
+ } while (Date.now() < timeoutTimestampMs)
+}
+
+/**
+ * @param timeoutMs
+ * @param intervalMs
+ */
+async function divideAndConquerTimeoutBusyWait (
+ timeoutMs,
+ intervalMs = interval
+) {
+ const tries = Math.round(timeoutMs / intervalMs)
+ let count = 0
+ do {
+ count++
+ await sleep(intervalMs)
+ } while (count <= tries)