feature(promise) add