add Promise.all() impl
marionette fixes, backported