I have a chain of functions for grabbing some JSON data, then inserting the data into a database.  I want to wait for all of the inserts to complete, so I am trying to use Promise.all().  I know that Promise.all() needs an array (or iterable) of promises.
Here is my chain:
fetchBody().then(parseBody).then(prepareInserts).then(insertAll).then(function() {
    console.log('done')
}); // Error handling and more stuff here
My code is hanging on the prepareInserts function:
// Returns an array of promises, which will be iterated over in Promise.all();
const prepareInserts = function (data) {
    return new Promise(function (resolve, reject) {
        const promises = data.map(function (d) {
            return new Promise(function (resolve, reject) {
                connection.query(queryString, [d.a, d.b, d.c, d.d], function (error) {
                    if (error) {
                        reject(error);
                        return;
                    }
                    resolve();
                });
            });
        });
        resolve(promises);
    });
};
I think I have a fundamental misunderstanding of how I should be laying out the prepareInserts function; the queries are being executed there, which is not what I want.  I want them to be inserted in the last function in the chain:
const insertAll = function (promises) {
    return Promise.all(promises);
};
 
    