JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/q.js/1.0.1/q.js"></script>

JavaScript

function doSomething(time) {
    //option 1
    if (typeof time !== 'number' || time <= 0) throw new Error('invalid argument');
    
    var deferred = Q.defer();
    
    setTimeout(function() {
        deferred.resolve('yay');
    }, time);
    return deferred.promise;
};

doSomething('kappa').then(function(data) {
    console.log(data);
});

function doSomething2(time) {
    var deferred = Q.defer();

    //option 2
    if (typeof time !== 'number' || time <= 0) {
        deferred.reject(new Error('invalid argument'));
    } else {   
        setTimeout(function() {
            deferred.resolve('yay');
        }, time);
    }
    return deferred.promise;
};

doSomething2('kappa').then(function(data) {
    console.log(data);
}, function(err) {
    console.log(err);
});