title: Problem using EventEmitter in NodeJS with 'started' event
body: <p>I am having an issue triggering / responding to an async EventEmitter.emit event.  I am trying to get <code>this.emit('started',this.files)</code> to trigger in the find() function, but I only see it happen if I move the event inside the <code>for (const file of this.files)</code> loop</p>
  <pre><code>import { EventEmitter } from 'events'
  import { readFile } from 'fs'
  
  class FindRegex extends EventEmitter {
    constructor (regex) {
      super()
      this.regex = regex
      this.files = []
    }
  
    addFile (file) {
      this.files.push(file)
      return this
    }
  
    addFiles(files) {
      for (const file of files) {
        this.addFile(file)
      }
      return this
    }
  
    find () {
      this.emit('started',this.files)
      for (const file of this.files) {
        readFile(file, 'utf8', (err, content) =&gt; {
          if (err) {
            return this.emit('error', err)
          }
  
          this.emit('fileread', file)
  
          const match = content.match(this.regex)
          if (match) {
            match.forEach(elem =&gt; this.emit('found', file, elem))
          }
        })
      }
      return this
    }
  }
  
  let fs = ['fileA.txt','fileB.json']
  const findRegexInstance = new FindRegex(/hello \w+/)
  findRegexInstance
    .addFiles(fs)
    .find()
    .on('found', (file, match) =&gt; console.log(`Matched &quot;${match}&quot; in file ${file}`))
    .on('error', err =&gt; console.error(`Error emitted ${err.message}`))
    .on('started', files =&gt; console.log(`Started find, files:  ${files}`))
  </code></pre>