| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 'use strict'const fs = require('fs')const started = Date.now()module.exports = function (timeout, callback) {  callback = callback.bind(null, null, process.pid, Math.random(), timeout)  if (timeout)    return setTimeout(callback, timeout)  callback()}module.exports.args = function (callback) {  callback(null, {      argv     : process.argv    , cwd      : process.cwd()    , execArgv : process.execArgv  })}module.exports.run0 = function (callback) {  module.exports(0, callback)}module.exports.killable = function (id, callback) {  if (Math.random() < 0.5)    return process.exit(-1)  callback(null, id, process.pid)}module.exports.err = function (type, message, data, callback) {  if (typeof data == 'function') {    callback = data    data = null  } else {    let err = new Error(message)    Object.keys(data).forEach(function(key) {      err[key] = data[key]    })    callback(err)    return  }  if (type == 'TypeError')    return callback(new TypeError(message))  callback(new Error(message))}module.exports.block = function () {  while (true);}// use provided file path to save retries count among terminated workersmodule.exports.stubborn = function (path, callback) {  function isOutdated(path) {    return ((new Date).getTime() - fs.statSync(path).mtime.getTime()) > 2000  }  // file may not be properly deleted, check if modified no earler than two seconds ago  if (!fs.existsSync(path) || isOutdated(path)) {    fs.writeFileSync(path, '1')    process.exit(-1)  }  let retry = parseInt(fs.readFileSync(path, 'utf8'))  if (Number.isNaN(retry))    return callback(new Error('file contents is not a number'))  if (retry > 4) {    callback(null, 12)  } else {    fs.writeFileSync(path, String(retry + 1))    process.exit(-1)  }}module.exports.uptime = function (callback) {  callback(null, Date.now() - started)}
 |