added support for promise on run()