Fix semantics on signaling channel

- Close channel before removing from `outstanding`
- Do not update when desired state is received more than once
- All credit to @elenadevena92
- Closes #110