fix Promise.when