From 85470a01c59874ac71c5f837f7507f5f2252e993 Mon Sep 17 00:00:00 2001 From: Muthu Kumar Date: Fri, 14 Sep 2018 06:01:59 +0530 Subject: [PATCH] [caller] Added normalising caller --- src/lib/unit/caller.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/lib/unit/caller.js diff --git a/src/lib/unit/caller.js b/src/lib/unit/caller.js new file mode 100644 index 0000000..a11d8cc --- /dev/null +++ b/src/lib/unit/caller.js @@ -0,0 +1,28 @@ +const { isPromise } = require('../../util'); + +const caller = (test, state) => { + + let value, error; + try { + value = test(state); + } catch (e) { + error = e; + } + + const promise = isPromise(value); + + if (promise) { + return value + .then(res => ({ resolve: res, promise: true })) + .catch(rej => ({ rejection: rej, promise: true })); + } else { + return Promise.resolve({ + ...(!error && {value}), + ...(error && {error}), + promise: false, + }); + } + +}; + +module.exports = caller;