exposed isPromiseLike