add `callback_promise` class.