Edit in JSFiddle

// TESTING simple-promise.js
// https://raw.github.com/blesh/simple-promise.js/master/simple-promise.min.js

// create a promise that will succeed.
function asyncHello(name) {
    return new Promise(function(d) {
        setTimeout(function() {
            out('Hello, ' + name + '!');
            d.resolve();
        }, 10);
    });
};

// create a promise that will fail.
function asyncFailure() {
    return new Promise(function(d) {
        setTimeout(function() {
            d.deny('planned failure');
        }, 10);
    });
}

// test a successful promise.
asyncHello('Lincoln').then(function() {
    out('done');
});

// test a failed promise.
asyncFailure().fail(function(reason) {
    out('FAIL: ' + reason);
});

// test a successful when.
when([
    asyncHello('Ben'),
    asyncHello('Jessie'),
    asyncHello('Laney'),
    asyncHello('Lincoln'),
    ]).then(function() {
    out('done');
});

// test a failure in a when.
when([
    asyncHello('Apples'),
    asyncHello('Oranges'),
    asyncFailure(),
    asyncHello('Bananas'),
    ]).then(function() {
    out('done');
}).fail(function(reason) {
    out('FAIL: ' + reason);
});

// output some text


function out(msg) {
    document.write(msg + '<br/>');
}

              

              

External resources loaded into this fiddle: