error when using Promise.all: TypeError: intermediate value is not iterable at

Viewed 2766

I am trying to stop a list of sql instances, since it's async I am using Promise.all
the code fails on:

TypeError: (intermediate value) is not iterable
    at Promise.all.sqlInstancesList.map (/workspace/index.js:40:53)
    at process._tickCallback (internal/process/next_tick.js:68:7)

what am I doing wrong?
here is the code:

const { google } = require('googleapis')
const { auth } = require('google-auth-library')
const sqladmin = google.sqladmin('v1beta4')
​

exports.stopSqlInstance = async (event, context, callback) => {
        try {
​
                const authRes = await auth.getApplicationDefault()
​
                var sqlInstancesList = ["my-instance-name"];
​
                await Promise.all(
                        sqlInstancesList.map(async (instance) => {
                                console.info("stopping " + instance);
                                var request = {
                                        auth: authRes.credential,
                                        project: "my-project-id",
                                        instance: instance,
                                        requestBody: {
                                                 "settings": {
                                                          "activationPolicy": "NEVER"
                                                 }
                                         }  
                                }       
                                const [operation] = await sqladmin.instances.patch(request);
                                // Operation pending
                                return operation.promise();
                         })
                 );
​
                // Operation complete. Instance successfully stopped.
                const message = `Successfully stopped instance(s)`;
                console.log(message);
                callback(null, message);
​
        } catch(err) {
                console.error(err);
                callback(err);
        }

}
1 Answers

Have you tried return operation instead of operation.promise() ?

const [operation] = await sqladmin.instances.patch(request);
                                // Operation pending
 return operation  // instead of operation.promise()

Because if you are awaiting you don't need to return promise() again

Related