add AbstractPromise