All files maltapromise.js

100% Statements 18/18
87.5% Branches 7/8
100% Functions 6/6
100% Lines 18/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38        2x 2x 2x   1x 1x     1x 1x             3x 3x 3x     14x 2x 2x 2x     14x 2x 2x     14x  
/**
 * really simple one level promise
 */
function check (inst) {
    const self = inst;
    Eif (!self.solved) {
        self.f(
            function () {
                self.solved = 1;
                self.solve && self.solve.apply(null, [].slice.call(arguments, 0));
            },
            function () {
                self.solved = 0;
                self.reject && self.reject.apply(null, [].slice.call(arguments, 0));
            }
        );
    }
}
 
function MPromise (f) {
    this.f = f;
    this.solved = false;
    this.reject = true;
}
 
MPromise.prototype.then = function (f) {
    this.solve = f || true;
    check(this);
    return this;
};
 
MPromise.prototype.catch = function (f) {
    this.reject = f;
    return this;
};
 
module.exports = MPromise;