/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

export default function (P = Promise, timeout = setTimeout) {
  // var interval;
  return function (milliseconds, cb = function () {}) {
    // clearInterval(interval);
    // const cb = typeof _cb !== 'function' ? (i) => { clearInterval(interval);interval = i; } : _cb;
    return new P((resolve, reject) => {
      cb(
        timeout(function () {
          resolve(milliseconds);
        }, milliseconds)
      );
    });
  };
}
