Opóźnienie do następnej funkcji w łańcuchu metod

Próbuję dowiedzieć się więcej na temat metody łączenia łańcuchów w Javascript i chciałbym wiedzieć, w jaki sposób stworzyć opóźnienie bez jQuery dla następnej funkcji w łańcuchu:

var foo = function() {
    this.delay = function(per) {
        setTimeout(start, per);
        return this;
    };
    this.start = function() {
        alert('start!');
    };
};

var bar = new foo().delay(1000).start();

questionAnswers(2)

yourAnswerToTheQuestion