example works, and does not seem to leak memory. Also GetReadChannel returns channel instead of unique_channel