Skip to content

Instantly share code, notes, and snippets.

@weslenng
Created June 28, 2021 17:04
Show Gist options
  • Save weslenng/7d8162d91bbd9114566f75e8b4175675 to your computer and use it in GitHub Desktop.
Save weslenng/7d8162d91bbd9114566f75e8b4175675 to your computer and use it in GitHub Desktop.
const express = require("express");
const application = express();
const TIME_OUT = 4096;
const circuitBreaker = () =>
new Promise((_, reject) => setTimeout(reject, TIME_OUT));
const ensureTimeout = (startTime) =>
new Promise((resolve) =>
setTimeout(resolve, TIME_OUT - (Date.now() - startTime))
);
application.get("/example", async (request, response, next) => {
const startTime = Date.now();
const myTask = async (request) => {
return {
truth: "Killua is the most perfect character in the entire world",
};
};
try {
const result = await Promise.race([circuitBreaker(), myTask(request)]);
await ensureTimeout(startTime);
return response.sendStatus(200);
} catch (err) {
return response.sendStatus(408);
}
});
application.listen(3000, () => console.log("Listening on :3000!"));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment