Using Velocity, it's hard to deal with concurrency problems caused by scripts modifying the same document based on user input. The reason is that when those interactions happen at the same time, they will seem to cancel each other because they don't take into account the changes made by others.
To help reduce potential damages in use cases like this, I've just released the Sync macro. It's making sure that its content won't be executed at the same time by several scripts. This means for example that if the script loads the document, addd the user to a list property and then saves the document, at the end all the users that were added at the same time will be in there.
See more details on how to use it on Sync Macro extension page.