I'm exporting Promise.jsm's `Promise` for now, which has the same API as the DOM Promise; we can switch over to DOM Promise underlying in the future