I am currently using amazon polly to generate sound files from data however when I run my script I keep getting the error message:
ThrottlingException: Rate exceeded.
What I have currently
Here is the function that I use
function createAudioFiles(data, outputDir) {
  console.log('in createAudioFiles with data: ' , data);
  return new Promise((resolve, reject) => {
    let successessfullyCompletedAmount = 0;
    for ({ audioText, filename } of data) {
        createAudio(audioText, filename, outputDir)
        .then(({ status, message }) => {
          if (status == "success") {
            successessfullyCompletedAmount++;
            console.log(message);
          }
          // if all audio files have been created
          if (successessfullyCompletedAmount == data.length) {
            resolve({
              status: 'success',
              message: "successfully created audioFiles"
            })
          }
        })
    }
  });
}
The createAudio function in that function is:
function createAudio(text, filename, outputDir) {
  let params = {
    'Text': text,
    'OutputFormat': 'mp3',
    'VoiceId': 'Amy'
  };
  return new Promise((resolve, reject) => {
        Polly.synthesizeSpeech(params, (err, data) => {
            if (err) {
                console.log("errors found");
                console.log(err);
            } else if (data) {
                if (data.AudioStream instanceof Buffer) {
                    fs.writeFile(`${outputDir}/${filename}`, data.AudioStream, function (err) {
                        if (err) {
                            return reject({
                                status: "error",
                                message: err
                            })
                        }
                        resolve({
                            status: "success",
                            message: filename + " saved"
                        });
                    })
                }
            }
        });
  })
}.
What I tried.
I tried adding a setTimeout() wrapper on the for loop like so: 
setTimeout(function() {
        for ({ audioText, filename } of data) {
            createAudio(audioText, filename, outputDir)
            .then(({ status, message }) => {
            if (status == "success") {
                successessfullyCompletedAmount++;
                console.log(message);
            }
            // if all audio files have been created
            if (successessfullyCompletedAmount == data.length) {
                resolve({
                status: 'success',
                message: "successfully created audioFiles"
                })
            }
            })
        }
    }, 2000);
but that does not seem to change anything. What I think is happening is all the data seems to be gathered and sent at once.
What I want to happen.
I would like to add a small delay between each 'get' from amazon to slow down the rate.
 
    