Express Serverless Twilio

Hello,

I am currently having an issue with the Serverless Express setup. Within my controller, I reference the Twilio API to send messages. If i do not include a response to the function, the messages send just fine. If i do include a response, it seems my connection is cut short before any messages are sent. The function is structured with async/await and i do use a async.retry method to assist in delivery.

Any error logs ? can you share a snippet of your code ?

‘use strict’

const twilio = require(‘twilio’);
const config = require(’…/…/config’);
const phoneFormatter = require(‘phone-formatter’);
const phoneValidator = require(‘awesome-phonenumber’);
const ObjectId = require(‘mongodb’).ObjectId;
const database = require(’…/database’);
const async = require(‘async’);
const _ = require(‘lodash’);

const { twilioAccount } = config;

const sendMessageTest = async (inputs) => {

if (inputs.phoneNumber) {

    let phoneNumber = phoneFormatter.normalize(inputs.phoneNumber);

    if (phoneValidator(phoneNumber, 'US').isValid()) {

        const client = new twilio(twilioAccount.accountSid, twilioAccount.authToken);

        let scheduledMessage = await inputs.db.collection('scheduledmessage').findOne({
            _id: ObjectId(inputs.id)
        });

        scheduledMessage.bodyMessages = JSON.parse(scheduledMessage.bodyMessages);

        await Promise.all(_.each(scheduledMessage.bodyMessages, async (bodyMessage) => {
        
            _.each(bodyMessage.match(/%!*[^%]*!%/g), (mergeField) => {
            mergeField = mergeField.replace(/(%!|!%)/g,'');
            bodyMessage = bodyMessage.replace(new RegExp('%!' + mergeField + '!%'), mergeField);
            });
        
            async function sendMessageTest () {
        
                if (scheduledMessage.type === 'sms') {
                    let message = await client.messages.create({
                    body: bodyMessage,
                    from: twilioAccount.twilioMessageTestPhoneNumber,
                    to: inputs.phoneNumber
                    });

                    return message;
            
                } else if (scheduledMessage.type === 'mms') {
            
                    let message = await client.messages.create({
                        body: bodyMessage,
                        from: twilioAccount.twilioMessageTestPhoneNumber,
                        to: phoneNumber,
                        mediaUrl: scheduledMessage.mediaSrc
                        });

                    return message;
                
                }
            
            }
        
            await async.retry({
                times: 10,
                interval: function(retryCount) {
                    return 50 * Math.pow(2, retryCount);
                }
            }, sendMessageTest, (err, result) => {
                if (!err) { return; }
            });
        
        }));

    };

    return { statusCode: 200 }

};

};

module.exports = {
send: async function (req, res) {

    let db = await database.createConnection();

    let argins = { 
        db,
        id: req.body.id,
        phoneNumber: req.body.phoneNumber
    };
   
    try {

        res.send(await sendMessageTest(argins))
        return;

    } catch (error) {

        return error;

    }

}

}