XXX (now a FIXME) says: "This isn't correct if f fails". In code I'm about to commit, I'm moving this from flatpipes::util into std::io_util