use when.js Promise polyfill