promise.js not needed