Read the next value from the
Chan. Blocks when the channel is
empty. Since the read end of a channel is an
MVar, this
operation inherits fairness guarantees of
MVars (e.g. threads
blocked in this operation are woken up in FIFO order).
Throws
BlockedIndefinitelyOnMVar when the channel is empty and
no other thread holds a reference to the channel.