#12 Add Promise support