add simple promise lib