title: Is done required in async Jest tests?
body: <p>I'm having an argument with a co-worker about <code>done()</code> in Jest tests.</p>
  <p>He's orders of magnitude more experienced with JavaScript than I am, and I came in after <code>async</code>/<code>await</code> was generally accepted, plus came from a .NET environment, so I was used to it.</p>
  <p>I write my tests like this:</p>
  <pre><code>it(&quot;should return 200 OK for POST method&quot;, async () =&gt; {
      await request(app).post(&quot;SOMEENDPOINT&quot;)
        .attach(&quot;file&quot;, &quot;file&quot;)
        .expect(200);
  });
  </code></pre>
  <p>He's more used to promises so will write his tests like this:</p>
  <pre><code>it(&quot;should return 200 OK for POST method&quot;, (done) =&gt; {
    request(app).post(&quot;SOMEENDPOINT&quot;)
      .attach(&quot;file&quot;, &quot;file&quot;)
      .expect(200, done);
  });
  </code></pre>
  <p>He's fine with my push to <code>async</code>/<code>await</code>, but insists I have to include <code>done</code>, such that I'm either doing his version modified version:</p>
  <pre><code>it(&quot;should return 200 OK for POST method&quot;, async (done) =&gt; {
    await request(app).post(&quot;SOMEENDPOINT&quot;)
      .attach(&quot;file&quot;, &quot;file&quot;)
      .expect(200, done);
  });
  </code></pre>
  <p>Or:</p>
  <pre><code>it(&quot;should return 200 OK for POST method&quot;, async (done) =&gt; {
      const res = await request(app).post(&quot;SOMEENDPOINT&quot;)
       .attach(&quot;file&quot;, &quot;file&quot;);
      
      expect(res.status).toBe(200);
      done();
  });
  </code></pre>
  <p>While I recognize calling <code>done()</code> is entirely necessary when it's included as a parameter, I was under the impression it is wholly unnecessary when using <code>async</code>/<code>await</code> in this context.</p>
  <p>Request is <code>supertest.request</code>.</p>
  <p>My question is, do I need to use <code>done</code> at all with <code>async</code>/<code>await</code>?</p>