using using (trivial)
ensure fd is not leaked if task::spawn throws any exception