add core support for promises