Cleanup: call resolve only once per macroexpansion attempt