It’s not atomic. If you need all or none behaviour I think you can do something custom in cloud code with the database driver. But you need to make sure your objects are parse compatible since your objects will not be checked by parse server. Otherwise you may face some unwanted results.
I wouldn’t know as I don’t use the JS SDK directly. You can do this easily on the Swift SDK by enabling transactions when configuring the SDK or on a per saveAll bases. I believe the Swift SDK is the only one that can use transactions currently. The other way would be to use the REST API directly, but that’s not the easiest to do when batching as constructing the command for this isn’t pretty.