With functions don’t call other functions, the state of the system is maintained in the data stores. Consequently, functions have to rely on the concurrent control features of data stores to manage concurrent access/updates to data. Right? If so, I wonder how would one realize transactions that involve multiple functions? Combining all functions in a transaction into a “monolith” function is an option and that leads us back to monoliths. The alternative is to spread transaction details across functions and this breaks encapsulation (and will likely lead to complexity that spans multiple functions).
What are your or others’ thoughts on this aspect?