function getUser(id) { var d = Q.defer() $.ajax({ url: "/echo/json/", data: { json: JSON.stringify({firstName: "Jose", lastName: "Romaniello"})} , type: "POST" }).done(d.resolve).fail(d.reject); return d.promise; } getUser(123) .then(function (user) { return Q.delay(2000) .thenResolve(user); }).then(function (user) { alert(user.firstName); });