Docs and tests for Channel.end behaviour

* Worked out exactly how Channel.end is implemented
* Wrote tests to assert this behaviour
* Wrote docs to specify this behaviour