本当にdisk fullを救わないといけないなら
closeを保証するブロックの内側にflushを保証する別のブロックをRAIIで作ればいいんじゃないの?