Files
bun.sh/test/js/node/cluster/upstream/common/countdown.js
Meghan Denny fd75ca7585 implement node:cluster (#11492)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Co-authored-by: nektro <nektro@users.noreply.github.com>
Co-authored-by: cirospaciari <ciro.spaciari@gmail.com>
2024-08-18 00:12:42 -07:00

28 lines
584 B
JavaScript

"use strict";
const assert = require("assert");
const kLimit = Symbol("limit");
const kCallback = Symbol("callback");
const common = require("./");
class Countdown {
constructor(limit, cb) {
assert.strictEqual(typeof limit, "number");
assert.strictEqual(typeof cb, "function");
this[kLimit] = limit;
this[kCallback] = common.mustCall(cb);
}
dec() {
assert(this[kLimit] > 0, "Countdown expired");
if (--this[kLimit] === 0) this[kCallback]();
return this[kLimit];
}
get remaining() {
return this[kLimit];
}
}
module.exports = Countdown;