stream: remove isPromise utility function#35925
stream: remove isPromise utility function#35925aduh95 wants to merge 2 commits intonodejs:masterfrom
Conversation
|
Review requested:
|
|
Yes the behavior is the same. Another way would be to change the name of the function |
|
Actually the current implementation (and the one in this PR) is wrong if someone passes a It's not a big bug but promise test suites check for it. The correct implementation would be to do it in "two steps":
See here for an example |
The function was not checking if the parameter was actually a Promise instance, but if it has a `then` method. Removing the utility function in favor of a clearer `typeof` check, handling the case when the thenable throws if then method is accessed more than once.
35e4d0a to
f18db47
Compare
|
I've implemented the solution suggested by @benjamingr, PTAL. |
benjamingr
left a comment
There was a problem hiding this comment.
Please consider adding a test.
If you prefer not to - I'll add one sometime after this lands :]
|
Test added! It does fail on master and not with this PR, PTAL. @ronag Have your concerns been addressed? |
|
@ronag are you still blocking this or can your objection be dismissed? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Landed in adae822...ad98cf0 |
The function was not checking if the parameter was actually a Promise instance, but if it has a `then` method. Removing the utility function in favor of a clearer `typeof` check, handling the case when the thenable throws if then method is accessed more than once. PR-URL: #35925 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
The function was not checking if the parameter was actually a Promise instance, but if it has a `then` method. Removing the utility function in favor of a clearer `typeof` check, handling the case when the thenable throws if then method is accessed more than once. PR-URL: #35925 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
The function was not checking if the parameter was actually a Promise instance, but if it has a `then` method. Removing the utility function in favor of a clearer `typeof` check, handling the case when the thenable throws if then method is accessed more than once. PR-URL: #35925 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
The function was not checking if the parameter was actually a Promise
instance, but if it has a
thenmethod. Removing the utility functionin favor of a clearer
typeofcheck, handling the case when thethenable throws if then method is accessed more than once.
The difference between a thenable and a
Promisemay be important when using third party library (the parameter is provided by the user) and/or whenPromise.prototype.thenvalue is changed from userland.Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes