title: Node.js catching async errors with Jest
body: <p>I feel like I'm going overboard here and need a sanity check, I am using jest with SuperTest</p>
  
  <p>Q1) If the expect <code>expect(res.status).toBe(400);</code> fails will the catch block fire?</p>
  
  <p>Q2) Should I <code>throw error</code> or <code>throw New Error()</code></p>
  
  <p>Q3) Does jest just handle this and I don't need a try catch statement?</p>
  
  <pre><code>const testUrl = '/register';
  const headers = ['Accept', 'application/json'];
  
  it('should validate that the `email` has already been registered and throw 400 error', async (done) =&gt; {
      try {
          const res = await request(app).post(testUrl).set(headers).send({
              email: 'test@myDomain.com',
              fullName: 'test user',
              password: 'testPassword!',
          });
          expect(res.status).toBe(400);
          expect(res.body.message).toEqual('You have already registered');
      } catch (error) {
          error.message = `${error.message}\n\nfailing query: ${testUrl}`;
          throw error;
      } finally {
          done();
      }
  });
  </code></pre>