I am writing an aws lambda function to get data from 3 sources and return it in json format. I am attempting to use promises to get it done. However my function always times out even though the three procedures run correctly it does not seem to return the result.
I have been trying to reorder the promises and have removed a couple to see if they fail.
it's this promise specifically
.then(function(clientinfo) {
        return new Promise((resolve, reject) => { // (*)
            pool.getConnection(function(err, connection) {
                if (err) {
                    console.log(err);
                }
                connection.query('SELECT * FROM mautic.leads where email = "test@test.com"', function (error, results, fields) {
                    connection.release();
                    // Handle error after the release.
                    if (error) throw error;
                    else
                    console.log(results);
                    console.log('send results');
                    clientinfo.mydata = results;
                    callback(clientinfo);
                });
            });  
        });
    })
function get_user(event, callback) {
    console.log('START');
    new Promise( function (resolve, reject) {
        dynamo.query({
            TableName : 'TransactionFingerprint',
            KeyConditionExpression : "emailmtcid = :emailmtcid",
            ExpressionAttributeValues : {
                ":emailmtcid": event.queryStringParameters.id
            },
            Limit : 1
        }, function(err, data) {
            if (err) {
              console.log('error','reading dynamodb failed: '+err);
              reject(err);
            }
            if (data.Count == '0') {
              console.log('NOT FOUND');
              update_user(url, sid, function(json){ callback(json) });
            } else { 
                console.log('FOUND IN DYNAMO');
                const dyntable = {
                    "TableName": "TransactionFingerprint",
                    "Item": { 
                        "Id": data.Items[0].emailmtcid
                    }
                };
                console.log("dynamodb");
                console.log(dyntable);
                resolve(dyntable) ;
            }
        });
    })
    .then(function(dyntable) {
        return new Promise((resolve, reject) => { // (*)
            conn.login(salesforceLogin, salesforcePass, function(err, res) {
                if (err) {
                    console.log(err);
                }
                conn.query("SELECT FirstName,LastName,PersonEmail,silverpop__Silverpop_RecipientID__pc from Account WHERE PersonEmail = 'test@test.com'", 
                    function(err, res) {
                        if (err) { 
                            console.log(res + 'SF2 RESPONSE');  
                        }
                    var sfinfo = res['records'];
                    var clientinfo = {};
                    clientinfo.data = sfinfo;
                    console.log('salesforce query');
                    console.log(sfinfo);
                    clientinfo.dyndata = dyntable;
                    resolve(clientinfo);
                });
            });
        });
    })
    .then(function(clientinfo) {
        // return new Promise((resolve, reject) => { // (*)
            pool.getConnection(function(err, connection) {
                if (err) {
                    console.log(err);
                }
                connection.query('SELECT * FROM mautic.leads where email = "test@test.com"', function (error, results, fields) {
                    connection.release();
                    // Handle error after the release.
                    if (error) throw error;
                    else
                    console.log(results);
                    console.log('send results');
                    clientinfo.mydata = results;
                    callback(clientinfo);
                });
            });  
        // });
    });
}
get_user(event, response => done(null, response));
Hopefully i will return all results from all three data sources in one json object. **EDIT I removed the callbacks inside the .then()
