Using pascal case for the class name keeps it more consistent with the majority of the other class names.
This reverts commit 2d33c20231 and reapplies various patches for memory leaks. The reason for the revert was a bug for a maximum duration interval which caused sleep_for() to cause unpredictable behavior.
2d33c20231
This custom small implementation avoids adding an extra dependency like Boost.ScopeExit