Documentation

A ReadAction is a function which takes a Size which defines how many bytes
to read and a Timeout. The function returns an IO action which, when
executed, performs the actual read and returns the ByteString that was read
paired with a flag which indicates whether a transfer timed out.

A WriteAction is a function which takes a ByteString to write and a
Timeout. The function returns an IO action which, when exectued, returns the
number of bytes that were actually written paired with an flag which indicates
whether a transfer timed out.