UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

40 lines (33 loc) 1.08 kB
'use strict' const constants = require('./constants') const unwrapSync = require('./unwrapSync') // Behaves like a Promise, though the then() and catch() methods are unbound and // must be called with the instance as their thisArg. // // The executor must either return a value or throw a rejection reason. It is // not provided resolver or rejecter methods. The executor may return another // thenable. class Thenable { constructor (executor) { try { this.result = unwrapSync(executor()) this.state = constants.RESOLVED } catch (err) { this.result = err this.state = constants.REJECTED } } then (onFulfilled, onRejected) { if (this.state === constants.RESOLVED && typeof onFulfilled === 'function') { return new Thenable(() => onFulfilled(this.result)) } if (this.state === constants.REJECTED && typeof onRejected === 'function') { return new Thenable(() => onRejected(this.result)) } return this } catch (onRejected) { return this.then(null, onRejected) } } module.exports = Thenable