cut out the middleman

aaa
Rich Harris 8 months ago
parent 074afa9bec
commit ef13cda2ca

@ -14,11 +14,8 @@ export function AwaitExpression(node, context) {
}
return b.call(
b.member(
b.await(
b.call('$.save', node.argument && /** @type {Expression} */ (context.visit(node.argument)))
),
'restore'
b.await(
b.call('$.save', node.argument && /** @type {Expression} */ (context.visit(node.argument)))
)
);
}

@ -168,17 +168,14 @@ export function VariableDeclaration(node, context) {
b.declarator(
declarator.id,
b.call(
b.member(
b.await(
b.await(
b.call(
'$.save',
b.call(
'$.save',
b.call(
'$.async_derived',
rune === '$derived.by' ? value : b.thunk(value, true)
)
'$.async_derived',
rune === '$derived.by' ? value : b.thunk(value, true)
)
),
'restore'
)
)
)
)

@ -295,17 +295,15 @@ export function suspend() {
/**
* @template T
* @param {Promise<T>} promise
* @returns {Promise<{ restore: () => T }>}
* @returns {Promise<() => T>}
*/
export async function save(promise) {
var restore = capture();
var value = await promise;
return {
restore() {
restore();
return value;
}
return () => {
restore();
return value;
};
}

Loading…
Cancel
Save