I was quite confused about this, I didn't realize `+zip:`/`-zipWith:` worked like this. It seemed like this would require both `self` and `observer` to deallocate.