This feels too generic to be here, also note that we already have [once](https://github.com/mozilla/addon-sdk/blob/master/lib/sdk/dom/events.js#L77). You could probably add `promise(eventTarget, eventType, [capture])` there instead.