On error, don’t callback until close.
End callbacks are now optional.

Also, correctly report close error (if any) on successful read end.
Also, don’t bother nulling the channel on close; just throw away the container.
Also, simplify the example programs slightly.