JSFiddle - React, Tailwind, and code Playground

HTML

<button id="btn">Click me</button>

JavaScript

Function.prototype.deferUntil = function(condition, timeLimit) {
    var ret = condition();

    if (ret) {
        this(ret);
        return null;
    }

    var self = this, interval = null, time = ( + new Date());
    interval = setInterval(function() {
        ret = condition();
        if (!ret) {
            if (timeLimit && (new Date() - time) >= timeLimit) {
                // Nothing
            } else {
                return;
            }
        }
        interval && clearInterval(interval);
        self(ret);
    }, 20);

    return interval;
};

$(function() {
    $('#btn').click(function() {
        setTimeout(function() {
            $('#btn').after('<div id="div">Loaded</div>');
        }, 2000);

        (function() {
            $('#div').after('<div>Div loaded</div>');
        }).deferUntil(function() {
            return $('#div').length > 0;
        }, 5000);
    });
});