There's two things you can do: use a plain function and call your constructor internally:
function createThing(args) {
return doPrep.then(function (prepdata) { return new Thing(prepdata, args); })
}
Or do the prep work in the constructor, but have the object not fully ready to use -- which if you think of promises as future values and not flow control, makes perfect sense:
function Thing(args) {
this.prep = doPrep();
}
/* Later */
var thing = new Thing();
thing.prep.then(function (prepdata) { ... })
What is the actual task you're trying to accomplish?
Aria