When readAll tries to push data to channel it's doing it under the fanout lock which can deadlock with reader Close that also tried to acquire that lock before signaling that channel is closed.
This change resolves this by using the cancellation channel pattern.
When readAll tries to push data to channel it's doing it under the fanout lock which can deadlock with reader Close that also tried to acquire that lock before signaling that channel is closed.
This change resolves this by using the cancellation channel pattern.
Fixes #349