Thank you for your post.
Let me focus on the second part of the description. Namely, if you create a new button with the Set Field script step, does it work in a timely manner? If so, then the original button may be damaged. Replace the original button with the new button.
If you create a script with the Set Field script step and execute the script, does it work in a timely manner? If so, create a button that executes the script.
Are there any other script steps that precede the Set Field step? If so, have you tried a Commit Records script step prior?
Please post the script as it may point to a contributing factor for the delay.
the insertion of a commit as the initial step solved the problem