The problem is that I wanted to make a wrapper that doesn't require you to wait on a promise before you start firing off commands. But we have to wait until the domain is loaded before we know what the commands are. If we do it this way, we can just wait for the connection to come up and the domains to be loaded before rejecting the exec promise if the command isn't there. In a previous version, I actually went ahead and bound all the loaded commands to the domain object itself at domain load time, but then if you tried to execute a command before the domain had been loaded you'd get a `TypeError`. I also tried to find a way to override arbitrary property lookups for an object, but there doesn't seem to be a way to do this in ES5. I also would prefer to not have to pass strings around, but I personally think it's mostly just a style issue. (It's not like a static analysis could ever correctly predict the the properties on these domains anyway for the sake of, say, code hinting.)

I only added the `promise` and `ready` methods for backwards compatibility with the basic structure of `StaticServer`. I don't consider them to really be core features of `NodeDomain`.