promise objects which can instantiate new promise objects