Bugfix: avoid unlockign semaphore from the wrong thread
If it would time out during the wait period, it would release the semaphore in finally, leading to break of unique ownership promise
Clean: remove ITask inheritance from UploadPerfSnapshot
It used to be a task at the start, but not anymore