The Boomla Filesystem is fully transactional. No need to handle rollback logic in your code.
This is achieved by using a Merkle tree based filesystem. (If you know Git, its filesystem snapshots are also stored in Merkle trees.) Every time a change is made to the filesystem of a website, in reality, a new filesystem is created. Upon committing a transaction, the difference between the new and the old filesystem is written to disk, and finally, the root hash of the filesystem is also written to the disk. As the old version of the filesystem is not modified, rolling back a transaction is trivial: unless website hash pointer is successfully modified, the transaction is implicitly rolled back.