JSFiddle - React, Tailwind, and code Playground

HTML

<dif id='result'></dif>

JavaScript

function PubSub() {
    this.subs = {};
    this.subscribe = function(channel, sub) {
        this.subs[channel] = this.subs[channel] || [];
        this.subs[channel].push(sub);
    };
    this.publish = function(channel) {
        var args = [].slice.call(arguments, 1);
        this.subs[channel].forEach(function(sub) {
            sub.apply(void 0, args);
        });
    };
}

var ps = new PubSub();
ps.subscribe("en", function (message) {
    document.getElementById("result").innerHTML += "<p>1:" + message + "</p>";
    console.log("1:", message);
});
ps.subscribe("en", function (message) {
    document.getElementById("result").innerHTML += "<p>2:" + message + "</p>";
    console.log("2:", message);
});
ps.subscribe("es", function (message) {
    document.getElementById("result").innerHTML += "<p>3:" + message + "</p>";
    console.log("3:", message);
});

ps.publish("en", "hello");
ps.publish("es", "hola");