add Promise support #10