Everything here applies to `completed` too, just didn't want to duplicate the explanation.

I like handling errors even if we expect the signal not to send them, since it's more forward-compatible.