Можно наружу вытащить, если Deferred привычнее
function doSomething() {
var deferred = {};
deferred.promise = new Promise(function (resolve, reject) {
deferred.resolve = resolve;
deferred.reject = reject;
});
window.setTimeout(function () {
deferred.resolve('value');
}, 100500);
return deferred.promise;
}