This won't wait properly if `vmPort` is unbound. Check out some other modules where we do this kind of thing (bindReadOnly for example) for the right way to do this.