use either the native Promise or Bluebird