@velas/account-agent
Version:
sdk
23 lines (21 loc) • 757 B
JavaScript
async function use(array, ctx) {
const middlewares = [async function first(next) { await next() }].concat(array);
var inner_run = async (ctx, middlewares, index) => {
const next = async () => {
try {
await inner_run(ctx, middlewares, index + 1);
} catch(e) {
if (e.name === 'Error') {
const err = new Error(e.message);
err.name = middlewares[index+1].name;
throw err;
} else {
throw e;
};
};
};
if (index < middlewares.length) await middlewares[index].apply(ctx, [next]);
};
await inner_run(ctx, middlewares, 0);
};
export default use;