title: Add milliseconds delay to Array.map calls which returns Array of promises
body: <p>My need is simple. I would like to delay calls to <code>sendEmail</code> by 100 milliseconds. The email service provider permits at most sending 10 emails per second. </p>
  
  <p>Note, however, though <code>.map</code> is synchronous, it immediately returns a <code>Promise</code>. </p>
  
  <p>I have tried <code>setTimeout</code> to no avail, such as <code>setTimeout(() =&gt; resolve(x), 100)</code> and <code>setTimeout(() =&gt; {return new Promise....}, 100)</code>. </p>
  
  <p>Thoughts?</p>
  
  <pre><code>const promises = userEmailArray.map((userEmail) =&gt; {
    return new Promise((resolve, reject) =&gt; {
        ....
        mailer.sendEmail(userEmail);
        return resolve();
      });
    });
  });
  ...
  Promise.all(promises).then(() =&gt; resolve()).catch(error =&gt; reject(error));
  </code></pre>