Is this release-before-acquire pattern intentional? Would it make sense to have a two-argument macro with a "constructor" expression?