It's kind of confusing to have this class I'd rather do something along this lines (that is also consisstent with defer function):

```js
function deferEmitter() {
  let deferred = defer();
  merge(deferred.promise, EventTarget.prototype);
  return deferred;
}
```