rvx
Version:
A signal based rendering library
31 lines • 835 B
JavaScript
import { ASYNC, AsyncContext } from "../async/async-context.js";
import { captureSelf } from "../core/lifecycle.js";
export async function runAsyncTest(fn) {
const teardown = [];
const asyncCtx = new AsyncContext();
async function cleanup() {
for (let i = teardown.length - 1; i >= 0; i--) {
teardown[i]();
}
return asyncCtx.complete();
}
try {
const result = await fn({
asyncCtx,
use: fn => captureSelf(dispose => {
teardown.push(dispose);
return ASYNC.inject(asyncCtx, fn);
}),
});
await cleanup();
return result;
}
catch (error) {
try {
await cleanup();
}
catch { }
throw error;
}
}
//# sourceMappingURL=run-async.js.map