title: Using Chai expect throw not catching promise rejection
body: <p>I have searched all around how to solve this, but all solutions I tested don't work in my case.</p>
  
  <p>I have a function that returns a promise, which I'm trying to test using Mocha and Chai.</p>
  
  <p>I'm fuzzing the parameter so the function always returns:</p>
  
  <blockquote>
    <p>reject('Rejection reason')</p>
  </blockquote>
  
  <p>Here's the test I'm trying to run:</p>
  
  <pre><code>describe('fuzzing tokenization with 1000 invalid values', () =&gt; {
  
     it('should throw an error - invalid value', async () =&gt; {
  
        for(var i=0; i &lt;= 1000; i++){
  
            var req = {
                body: {
                    value: fuzzer.mutate.string('1000000000000000')
                },
                user: {
                    displayName: user
                }
            };
  
            expect(await tokenizer.tokenize(req)).to.throw(Error);
  
        }
  
     });
  
  });
  </code></pre>
  
  <p>The test is failing with:</p>
  
  <blockquote>
    <p>Error: the string "Invalid value." was thrown, throw an Error :)</p>
  </blockquote>
  
  <p>I tested several changes like wrapping the expect into a function </p>
  
  <blockquote>
    <p>expect(async () => { ...}).to.throw(Error);</p>
  </blockquote>
  
  <p>and others I found googling. But I can't get this to work. </p>
  
  <p>What am I missing?</p>