get rid of extraneous type macro
change macro when method to use a pipe, propagating the new chained fulfilled type correctly
clean up the Promise.when function a bit more, add some docs