title: Extending Promise results in constructor called twice, how come?
body: <pre><code>class MyPromise&lt;T = void&gt; extends Promise&lt;T&gt; {
    started = false
    resolve: (t: T) =&gt; void = () =&gt; {}
    reject: (e: any) =&gt; void = () =&gt; {}
    constructor() {
      console.log('constructor')
      let resolve: (t: T) =&gt; void = () =&gt; {}
      let reject: (e: any) =&gt; void = () =&gt; {}
      super((res, rej) =&gt; {
        resolve = res
        reject = rej
      })
      this.resolve = resolve
      this.reject = reject
    }
  }
  
  const thing = new MyPromise&lt;string&gt;()
  thing.resolve('a')
  thing.then(t =&gt; console.log('then', t))
  </code></pre>
  <p>Constructor is called twice and I get this error</p>
  <pre><code>constructor
  constructor
  [TestError] TypeError: Promise resolve or reject function is not callable
  </code></pre>
  <p>Running on node 14.17.1</p>