create a promise for a set of values which might contain promises