Switched to centralized Replacer factory for easier tracking and avoiding exit before entire promise tree is resolved.