title: Unexpected asynchronous behaviour in EventEmitter
body: <p>I used an EventEmitter as the following:</p>
  
  <pre><code>const EventEmitter = require('events');
  
  const myEmitter = new EventEmitter();
  
  function c2(num) {
    return new Promise((resolve) =&gt; {
      resolve(`c2: ${num}`);
    });
  }
  
  // eslint-disable-next-line no-underscore-dangle
  // eslint-disable-next-line no-console
  const doSomeStuff = async (number) =&gt; {
    try {
      console.log(`doSomeStuff: ${number}`);
      const r2 = await c2(number);
      console.log(r2);
    } catch (err) {
      throw err;
    }
  };
  
  myEmitter.on('eventOne', async (n) =&gt; {
    await doSomeStuff(n);
  });
  
  myEmitter.emit('eventOne', 1);
  myEmitter.emit('eventOne', 2);
  myEmitter.emit('eventOne', 3);
  myEmitter.emit('eventOne', 4);
  </code></pre>
  
  <p>I expect a result of</p>
  
  <pre><code>doSomeStuff: 1
  c2: 1
  doSomeStuff: 2
  c2: 2
  doSomeStuff: 3
  c2: 3
  doSomeStuff: 4
  c2: 4
  </code></pre>
  
  <p>However the output shows me:</p>
  
  <pre><code>doSomeStuff: 1
  doSomeStuff: 2
  doSomeStuff: 3
  doSomeStuff: 4
  c2: 1
  c2: 2
  c2: 3
  c2: 4
  </code></pre>
  
  <p>As per my understanding, <code>EventEmitter</code> invokes the event callback function synchronously, however for some reason the callback function has not finished executing before the next callback function is invoked. I think I'm missing something very fundamental here.</p>