Como usar \@writefile sem bloquear um fluxo de gravação?

Como usar \@writefile sem bloquear um fluxo de gravação?

Pelo que entendi, para usar corretamente \@writefileé preciso bloquear um fluxo de gravação, assim:

\documentclass{article}

\usepackage{lipsum}

\begin{document}

\makeatletter
\newwrite\tf@foo
\openout\tf@foo=\jobname.foo
\newcommand\foo[1]{%
    Writing ``#1'' to \texttt{\jobname.foo}!%
    \protected@write\@auxout{}{\string\@writefile{foo}{#1}}%
    }
\makeatother

\foo{Bar}

\end{document}

(Isso realmente cria um arquivo .foocom uma linha contendo Bar.)

Existe alguma maneira de bloquear o fluxo de gravação?

informação relacionada