UNPKG

@velas/account-agent

Version:

sdk

23 lines (21 loc) 757 B
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;