This section concerns me because `AfterOpenSuccess` uses these 3 callbacks to put on a new `WatchPortBaton` which feeds back up to `EIO_AfterWatchPort` (this function), so they are clearly needed. The previous version that just did a `Dispose` puts them at the mercy of the garbage collector so they may or may not make it back through but now they are proper C++ classes which will be deleted. Also the previous version never disposed of `disconnectedCallback` so that's a leak.

I'm guessing that the two `goto cleanup`s should be where these 3 `delete`s go.