Another one is order of execution, filters, etc. With typical microframeworks like sparkjava (there are many, e.g. ninjaframework), you return some “action result” object from a handler, and then something happens with it, outside your current processing stack. With Kotlin builders it was proven (with Kara) that it is error prone, because if you do something like:
db.transaction {
response.html {
...
div {}
...
}
}
What happens is that html lambda is executed outside of transaction, because what you return is just an instance of html-builder.