fix use-after-free when a coroutine_observable triggered its own destruction by completion