JSFiddle - React, Tailwind, and code Playground

JavaScript

var promise = {
    isDone: false,
    doneHandler: null,
    done: function(f) {
        if (this.isDone) {
            f();
        } else {
            this.doneHandler = f;
        }
    },
    callDone: function() {
        if (this.doneHandler != null) {
            this.doneHandler();
        } else {
            this.isDone = true;
        }
    }
};

promise.done(function(){ alert('done'); });
promise.callDone();