I am trying to get all records from a DynamoDB table using promises. The problem is that DynamoDB do not return all items in one call I have to make multiple calls.  If LastEvaluatedKey is not null means that I need to make another call with that key to get the remaining records. In my code I am checking that and resolving only after LastEvaluatedKey is null. But the console.log("done") is not being executed.
Here is my code:
function query(params) {
    return new Promise(function(resolve, reject) {
        docClient.query(params, function(err, data) {
            if (err) {
                reject(err)
            } else {
                resolve(data);
            }
        });    
    })
}
function getAllRecords(params, combinedData) {
   return new Promise(function(resolve, reject) {
        query(params)
       .then(function(data) {
           if(!combinedData) {
               combinedData = [];
           }
           combinedData.push(data.Items); 
           if(data.LastEvaluatedKey) {
                params.ExclusiveStartKey = data.LastEvaluatedKey;
                getAllRecords(params, combinedData)
            }
            else {
                resolve(combinedData);
            }
       })    
   })
}
getAllRecords(params)
.then(function() {
  console.log('done')
})
.catch(function(error) {
    console.log(error);
})
It's probably a misconception on how promises work from my part. If someone can give me an idea how to make this work. That would be great.
 
     
     
    