The Puppet Cisco modules (IOS/Nexus) have idempotency, the issue of "sending configuration to the device before we knew the configuration of the device, [...] yielding undesired results" just isn't an issue.