We do this via run in TS:

    export const run = <T>(f: () => T): T => {
      return f();
    };

Can you clarify why do you prefer this over an IIFE `(() => {...})()`?

I like it. IIFEs always make me nervous because they look like they beg to be removed if you don't know why they are used. Using an explicit function such as `run` looks much more intentional, and provide a single intuitive place (the documentation of the `run` function) to explain the pattern.