make a promise
reject a promise