It seems almost everything except throwing errors and doing asynchronous jobs is allowed inside the thunk given to it. I guess it is an escape hatch for introducing an effectful computation from any javascript computation so that we don’t need to struggle with modeling complex effects(or requirements, in effect’s term).