use bluebird for promise/A+