The first 3 functions are helpers for running functions
under the protection of a lock.
The Mutex type is a wrapper over sync.Mutex with a Do method
that runs a function under the protection of a lock.
Updates #11038
Updates #cleanup
Signed-off-by: Joe Tsai <joetsai@digital-static.net>