Skip to content

Instantly share code, notes, and snippets.

View mobsense's full-sized avatar

Michael O'Brien mobsense

View GitHub Profile
@mobsense
mobsense / lambda-http.js
Created September 8, 2020 03:07
Async HTTP for Lambda
const https = require('https')
const URL = require('url')
async function request(url, data) {
return new Promise((resolve, reject) => {
let req = https.request(URL.parse(url), function (res) {
let body = ''
res.on('data', (chunk) => { body += chunk })
res.on('end', () => { resolve(body) })
})
@mobsense
mobsense / lambda-call-http.js
Created September 8, 2020 03:10
Calling async HTTP request from lambda
exports.handler = async (event, context) {
...
let result = await request('https://metric-service.com', metrics)
return result
}
@mobsense
mobsense / lambda-no-wait.js
Created September 8, 2020 03:11
Calling a HTTP request without waiting in Lambda
exports.handler = async (event, context) {
/* nowait */ request('https://example.com', metrics)
return 'done'
}
@mobsense
mobsense / lambda-with-sleep.js
Created September 8, 2020 03:13
Naively calling sleep in Lambda
exports.handler = async (event, context) {
/* nowait */ request('https://example.com', metrics)
await sleep(100)
return 'done'
}
@mobsense
mobsense / lambda-send-only.js
Created September 8, 2020 03:15
Sending a HTTP request without waiting for a response in Lambda
const https = require('https')
const URL = require('url')
async function request(url, data) {
return new Promise((resolve, reject) => {
let req = https.request(URL.parse(url))
req.write(data)
req.end(null, null, () => {
/* Request has been fully sent */
resolve(req)
@mobsense
mobsense / Lambda-no-response.js
Created September 8, 2020 03:17
Invoking a HTTP request that does not wait for a response
exports.handler = async (event, context) {
await request('https://example.com', metrics)
return 'done'
}
{
"exports": {
"import": "./dist/mjs/index.js",
"require": "./dist/cjs/index.js"
}
}
{
"exports": {
"import": {
"path": "./dist/mjs/index.js",
"type": "module"
},
"require": {
"path": "./dist/cjs/index.js",
"type": "commonjs"
}