Package Exports
- throwback
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (throwback) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Throwback
Simple asynchronous middleware pattern.
Installation
npm install throwback --saveUsage
Compose asynchronous (promise-returning) functions.
const { compose } = require("throwback");
const fn = compose([
async function(ctx, next) {
console.log(1);
try {
await next();
} catch (err) {
console.log("throwback", err);
}
console.log(4);
},
async function(ctx, next) {
console.log(2);
return next();
}
]);
// Callback runs at the end of the stack, before
// the middleware bubbles back to the beginning.
fn({}, function(ctx) {
console.log(3);
ctx.status = 404;
});Tip: In development (NODE_ENV !== "production"), compose will throw errors when you do something unexpected. In production, the faster non-error code paths are used.
Example
Build a micro HTTP server!
const { createServer } = require("http");
const finalhandler = require("finalhandler"); // Example only, not compatible with single `ctx` arg.
const { compose } = require("throwback");
const app = compose([
function({ req, res }, next) {
res.end("Hello world!");
}
]);
createServer(function(req, res) {
return app({ req, res }, finalhandler());
}).listen(3000);Use Cases
Inspiration
Built for servie and inspired by koa-compose.
License
MIT