add promise.js
improve