add isPromise and isGenerator