fix up subtle presence lifecycle quirks

* wait on inner process when presence is removed
* fix crash if process is never started and the lock is not acquired
* remove extraneous goroutine