add support for PromiseCallable and convert on Promise