Generator function to enumerate files
for (let file of await enumerateFiles(String.raw`C:\Windows\Web\Screen`))


The await looks like a leaky abstraction. Could your generator naturally behave synchronously?  A quote from Exploring ES6


  22.1.5 Use case: receiving asynchronous data 
  
  Generators can receive input from next() via yield. That means that you can wake up a generator whenever new data arrives asynchronously and to the generator it feels like it receives the data synchronously.