title: Combination of async function + await + setTimeout
body: <p>I am trying to use the new async features and I hope solving my problem will help others in the future. This is my code which is working:</p>
  
  <pre><code>  async function asyncGenerator() {
      // other code
      while (goOn) {
        // other code
        var fileList = await listFiles(nextPageToken);
        var parents = await requestParents(fileList);
        // other code
      }
      // other code
    }
  
    function listFiles(token) {
      return gapi.client.drive.files.list({
        'maxResults': sizeResults,
        'pageToken': token,
        'q': query
      });
    }
  </code></pre>
  
  <p>The problem is, that my while loop runs too fast and the script sends too many requests per second to the google API. Therefore I would like to build a sleep function which delays the request. Thus I could also use this function to delay other requests. If there is another way to delay the request, please let me know.</p>
  
  <p>Anyway, this is my new code which does not work. The response of the request is returned to the anonymous async function within the setTimeout, but I just do not know how I can return the response to the sleep function resp. to the initial asyncGenerator function.</p>
  
  <pre><code>  async function asyncGenerator() {
      // other code
      while (goOn) {
        // other code
        var fileList = await sleep(listFiles, nextPageToken);
        var parents = await requestParents(fileList);
        // other code
      }
      // other code
    }
  
    function listFiles(token) {
      return gapi.client.drive.files.list({
        'maxResults': sizeResults,
        'pageToken': token,
        'q': query
      });
    }
  
    async function sleep(fn, par) {
      return await setTimeout(async function() {
        await fn(par);
      }, 3000, fn, par);
    }
  </code></pre>
  
  <p>I have already tried some options: storing the response in a global variable and return it from the sleep function, callback within the anonymous function, etc.</p>