reimplementation on top of PerlIO::via::Timeout