closes #198 - observers are guaranteed to fire before the DOM is updated unless created with { defer: true } in which case they are guaranteed to fire afterwards