EventEmitter.emit that wraps event calls in a promise