This saving code is unfortunately some of our oldest, and often our most fragile. Over the years we’ve layered lots of functionality on it, and some things like saving drafts which can succeed or fail need their own custom functionality which just complicates it even more.
I think your intuition is probably right here, but it’s impossible for me to confirm without seeing how all our tests run. If you have time for a PR in the future that would be great.