Where feasible I put the await at the end of the function to
minimize the impact on latency.
My motivation for this change: Eliminate a race condition in tests I
am writing.
Simplified the cloning process, added validation checks to ensure the
new pad ID is valid and that a pad doesn't already exist with that ID.
Also fixed a bug in the chatHead cloning loop and added the ability to
specify a pad ID on the command the line (defaulting to the original
"-rebuilt" pad ID formula)
This script gives an admin with shell access the ability to restore a
pad at a given revision by essentially rebuilding it at a new location
with data associated with the original pad. The upsides to creating a
new pad vs. changing the original are: 1) avoiding service disruptions
(no deletes, no moving targets - builds from previous revision); and 2)
preservation of data (no deletes, no overwriting of the source pad).
The most obvious downside is the pad has a new ID which could require
folks to update their links, bookmarks, etc. to point at the new
location.