From 3598dcc9138de880e2ebfd321abdea9ee3ca5419 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20S=C3=A9ra?= Date: Wed, 28 Nov 2018 12:54:04 +0100 Subject: [PATCH] Enable 8.x style async handlers Add support to async handlers. Requires node 8+. --- bin/run-local-lambda.js | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/bin/run-local-lambda.js b/bin/run-local-lambda.js index 1b9fa46..2dc091a 100755 --- a/bin/run-local-lambda.js +++ b/bin/run-local-lambda.js @@ -22,7 +22,8 @@ file : 'index.js', event : 'event.json', timeout : 3000, - handler : 'handler' + handler : 'handler', + async: false }; /* @@ -59,6 +60,11 @@ settings.handler = array[index+1]; break; } + + case '--async': { + settings.async = true; + break; + } } }); } @@ -131,14 +137,23 @@ var context = createContext(settings.timeout); var lambda = require(path.resolve(settings.file, '.')); - - var execute = function(){ + var execute = async function(){ setTimeout(function(){ console.log('The function timed out after ' + settings.timeout + ' seconds'); process.exit(); }, settings.timeout); - lambda[settings.handler](event, context, callback) + if (settings.async) { + let result, err = null + try { + result = await lambda[settings.handler](event, context) + } catch(err) { + err = err + } + callback(err, result) + } else { + lambda[settings.handler](event, context, callback) + } }; execute();