use a modified Promise (with emptyPromise type ctor added) for better thread usage