use Promise instead of CallbackNotifier