Skip to content

react/promise v3 doesn't work fine #357

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
roxblnfk opened this issue Oct 3, 2023 · 8 comments
Open

react/promise v3 doesn't work fine #357

roxblnfk opened this issue Oct 3, 2023 · 8 comments
Labels
Bug Something isn't working

Comments

@roxblnfk
Copy link
Collaborator

roxblnfk commented Oct 3, 2023

In order to ensure asynchronous operation of user workflows, coroutines are implemented in the SDK, which use promises. It is a standard situation when we reject them with internal exceptions, which in some branches may not be handled.
However, in the paradigm of react/promise v3, this is considered undesirable practice. Therefore, when a rejected promise is completed, in which there is no exception handler, the error_log() function is called with the error text.

The side effects of such behavior are unpredictable, and it is currently impossible to disable it.

The issue about unhandled exceptions may be fixed once react/promise has the ability to set a permanent handler, not a one-time one.


Thanks to the tests in roadrunner-temporal, other deviations from the normal operation of the SDK were detected. These tests have been partially transferred to the SDK (see #359).

Therefore, I suggest temporarily abandoning react/promise v3 since version 2.6.1 until a solution is found.

@roxblnfk roxblnfk added the Bug Something isn't working label Oct 3, 2023
@roxblnfk roxblnfk added this to the 2.6.0 milestone Oct 3, 2023
@roxblnfk roxblnfk changed the title Unhandled Exceptions in Promises with react/promise v3 react/promise v3 doesn't work fine Oct 4, 2023
@roxblnfk roxblnfk removed this from the 2.6.0 milestone Feb 12, 2025
@ruudk
Copy link

ruudk commented May 18, 2025

Is there an update on this? I noticed that I had to downgrade react/promise on my project in order to install this SDK. And now I see all kind of Implicitly marking parameter $x as nullable is deprecated errors on PHP 8.4 that are fixed in v3 with reactphp/promise#260.

@roxblnfk
Copy link
Collaborator Author

React v3 still has several problems that prevent us from using it.

@ruudk
Copy link

ruudk commented May 19, 2025

I read the issue #359 but saw some follow up PR's, one that introduced a global rejection handler: https://github.com/reactphp/promise?tab=readme-ov-file#set_rejection_handler

Isn't this what was missing?

@roxblnfk
Copy link
Collaborator Author

roxblnfk commented May 19, 2025

It's still one-time handler

@ruudk
Copy link

ruudk commented May 19, 2025

Should there be a new issue to track this? I'm a bit surprised that the Temporal SDK has deprecations on PHP 8.4, which was released 6 months ago.

@roxblnfk
Copy link
Collaborator Author

Regarding deprecations in the SDK, definitely create an issue 👍 . However, deprecations in dependencies should be tracked by the dependencies themselves.

@ruudk
Copy link

ruudk commented May 19, 2025

Sure, but in this case, this SDK prevents installation of the latest major, so I think it would have been good if this project created that issue upstream. How else is it going to be fixed?

@roxblnfk
Copy link
Collaborator Author

roxblnfk commented May 19, 2025

Yes, it would be great to push the development of React/Promise. However, we still won't achieve the set goals, including those related to the @yield annotation.

Therefore, the most promising direction is to create a fork and maintain our own version of promises compatible with React. However, this is not a priority right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants