JSFiddle - React, Tailwind, and code Playground

by Glutamat

HTML

<script>
    var StackApi = (function StackApi() {
        var util = (function utilIIF() {
            return {
                enforceSignature: function enforcesSignature(options, args, fn) { //This is mainly a debug validation function may be replaced by a simpler one. If you pass a functin, its parameters get parsed and outputted on a mismatch.
                    var params, i, l, j, k, res;

                    res = true;


                    for (i = 0, l = options.length; i < l; i++) {
                        var types = options[i] = Array.isArray(options[i]) ? options[i] : [options[i]];
                        var mismatch = true;
                        for (j = 0, k = types.length; j < k; j++) {
                            if ((args[i] && args[i].constructor === types[j]) || (types[j] === args[i])) {
                                mismatch = false;
                                break;
                            }
                        }
                        if (mismatch) {
                            res = false;
                            break;
                        }
                    }

                    j--;

                    if (!res) {
                        var err = [
                        i >= 0 ? i : "?",
                        options[i][j] && (options[i][j].name || "asd"),
                        args[i] && args[i].constructor && args[i].constructor.name || '"' + args[i] + '"'];

                        if ("function" === typeof fn) {
                            params = ("" + fn).match(/\((.*)\)/)[1].split(",");
                            err.push(params[i] || "unknown");

                            throw new TypeError("Type mismatch on " + fn.name + " " + err[0] + " (" + err[1] + "). Expected " + err[2] + ", got " + err[3] + " instead");
                        } else {
                            throw new TypeError("Type mismatch on parameter" + err[1] + ". Expected " + err[2] + ", got " + err[3] + "...

JavaScript

StackApi.errors.fetch((r = {
    id: 503
})).error(function c(r) {

    console.log("a", r)
    StackApi.errors.fetch((r = {
        id: 503
    })).error(function c(r) {

        console.log("b", r)
    }).success(console.log.bind(console, "success"))
}).success(console.log.bind(console, "success"))