const work = () => { called++ }
work() // side effect fires now
There is no “create a function call value and run it later” — calling is running. The parentheses () are the action; you cannot hold a “call” as a value, only the function itself.
This is the contrast the rest of the step builds on, because Effect lets you put the call into a value too.
Why this matters. Plain functions can’t be retried, scheduled, forked,
mocked, or deferred — they’ve already happened by the time you’ve named
them. Every other beat in this step makes that limitation visible.
Your turn: run the test and confirm calling fires the side effect twice. There is nothing to fix here — the read-run beat sets the baseline you’ll compare every later Effect against.