import {AbortError} from "../utils/error.js";
class Timeout {
constructor(ms) {
this._reject = null;
this._handle = null;
this._promise = new Promise((resolve, reject) => {
this._reject = reject;
this._handle = setTimeout(() => {
resolve();
}, ms);
});
}
elapsed() {
return this._promise;
abort() {
if (this._reject) {
this._reject(new AbortError());
clearTimeout(this._handle);
class TimeMeasure {
constructor() {
this._start = window.performance.now();
measure() {
return window.performance.now() - this._start;
export class Clock {
createMeasure() {
return new TimeMeasure();
createTimeout(ms) {
return new Timeout(ms);
now() {
return Date.now();