Add two functions together and choose when the original one gets called!
Adds one or more functions together. Functions will take an additional callOriginal argument. This function will call the function before yours in the added functions.
const a = n => n + 1
const b = (n, callPrevious) => n + callPrevious() + 1
const c = addFunctions(a, b)
c(0) // -> 2
const asynchronouslyAdd2 = addFunctions(
() => getPromise(),
previous => previous().then(p => p + 1),
previous => previous().then(p => p + 1),
)