diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-09-21 15:53:35 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-09-21 15:54:11 -0300 |
commit | 8e3e15be98d43c1aa8a4f13709106f6848a0a9e4 (patch) | |
tree | 43421a0498f1004ee4a7534865ee02bf4b60f3a0 /src/data/things | |
parent | cb124756780e41c6791981233da4b56c031d6142 (diff) |
data: use error.cause for nested composite compute errors
Diffstat (limited to 'src/data/things')
-rw-r--r-- | src/data/things/composite.js | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/data/things/composite.js b/src/data/things/composite.js index e6cc267a..4074aef7 100644 --- a/src/data/things/composite.js +++ b/src/data/things/composite.js @@ -1369,15 +1369,27 @@ export function compositeFrom(description) { ...dependenciesFromSteps, ]); + const _wrapper = (...args) => { + try { + return _computeOrTransform(...args); + } catch (thrownError) { + const error = new Error( + `Error computing composition` + + (annotation ? ` ${annotation}` : '')); + error.cause = thrownError; + throw error; + } + }; + if (compositionNests) { if (compositionUpdates) { expose.transform = (value, continuation, dependencies) => - _computeOrTransform(value, continuation, dependencies); + _wrapper(value, continuation, dependencies); } if (anyStepsCompute) { expose.compute = (continuation, dependencies) => - _computeOrTransform(noTransformSymbol, continuation, dependencies); + _wrapper(noTransformSymbol, continuation, dependencies); } if (base.cacheComposition) { @@ -1385,10 +1397,10 @@ export function compositeFrom(description) { } } else if (compositionUpdates) { expose.transform = (value, dependencies) => - _computeOrTransform(value, null, dependencies); + _wrapper(value, null, dependencies); } else { expose.compute = (dependencies) => - _computeOrTransform(noTransformSymbol, null, dependencies); + _wrapper(noTransformSymbol, null, dependencies); } } |