BTW, you can always “convert” callbacks into sequential style with the help of CondVar
:
fork {
var cv = CondVar();
~fx = VSTPluginController(~synth).open("foo", action: { cv.signalOne });
cv.wait { ~fx.isOpen }; // note the boolean test!
// now you can use the plugin
~fx.editor;
~fx.loadPreset("baz");
}