Closed ellisonpatterson closed 11 months ago
Hey @ellisonpatterson,
In the HappyEyeBallsConnectionBuilder
comes up. Without deeply diving into the problem please know that happy eyeballs attempts mutiple connections if it gets multiples IP's from the DNS server to acquire a connection quickly. If a connection attempt is in flight but another one succeeds that attempt and the problems will be canceled and the rejection from that will be ignored because a successful connection has been created. Do you get the message as well because you should be able to get a lot of information from that.
@ellisonpatterson What @WyriHaximus said, there are a few cases where we internally reject promises and handle them accordingly. I'm not sure how much is gained by modifying the Deferred
as it doesn't really matter how many promises we reject internally as long as we're handling them. If you're on the lookout for unhandled promise rejections I'd suggest to upgrade to Promise v3 if possible.
Moreover, I think this kind of ticket is better suited for a discussion in our "Q&A" section, as we recommend opening bug tickets only when you can provide evidence of something being broken. Just as a friendly reminder for future tickets :)
I believe this should answer your question, so I will close this ticket for now :+1:
I am just doing simple GET queries, and for Promises v2, I modified
Deferred
so I can get logs whenever any promise is rejected. That is all and good, but randomly from time to time, I see that a promise was rejected, but it does not go down the chain and I am unable to handle the rejected promise result.It looks like it the DNS server randomly does not want to work, but for some reason it's not triggering a rejection handle in the original promise ($browser->get()).
Since I can't capture the promise being rejected (when this issue occurs), I can't retry HTTP queries or handle other errors.
I tried making a test script that uses an invalid DNS IP (like how the DNS library factory method builds it all) but that was resolving the promise and I was able to capture the rejection as intended.
Is there some edge-case that is happening where the original promise doesn't get resolved?
I also am an idiot as well, so that could be the issue.
Thank you!