33namespace Rx \React ;
44
55use React \Promise \CancellablePromiseInterface ;
6+ use React \Promise \Promise as ReactPromise ;
7+ use React \Promise \PromiseInterface ;
68use Rx \Disposable \CallbackDisposable ;
79use Rx \ObservableInterface ;
810use Rx \Observable ;
911use Rx \Observable \AnonymousObservable ;
10- use Rx \Observer \CallbackObserver ;
1112use Rx \Subject \AsyncSubject ;
1213use React \Promise \Deferred ;
1314
1415final class Promise
1516{
1617 /**
1718 * @param mixed $value
18- * @return \React\Promise\Promise A promise resolved to $value
19+ * @return ReactPromise A promise resolved to $value
1920 */
20- public static function resolved ($ value )
21+ public static function resolved ($ value ): ReactPromise
2122 {
2223 $ d = new Deferred ();
2324 $ d ->resolve ($ value );
@@ -26,9 +27,9 @@ public static function resolved($value)
2627
2728 /**
2829 * @param mixed $exception
29- * @return \React\Promise\Promise A promise rejected with $exception
30+ * @return ReactPromise A promise rejected with $exception
3031 */
31- public static function rejected ($ exception )
32+ public static function rejected ($ exception ): ReactPromise
3233 {
3334 $ d = new Deferred ();
3435 $ d ->reject ($ exception );
@@ -40,14 +41,15 @@ public static function rejected($exception)
4041 *
4142 * @param ObservableInterface $observable
4243 * @param Deferred $deferred
43- * @return \React\Promise\Promise
44+ * @return ReactPromise
45+ * @throws \InvalidArgumentException
4446 */
45- public static function fromObservable (ObservableInterface $ observable , Deferred $ deferred = null ): \ React \ Promise \ Promise
47+ public static function fromObservable (ObservableInterface $ observable , Deferred $ deferred = null ): ReactPromise
4648 {
4749 $ d = $ deferred ?: new Deferred ();
4850 $ value = null ;
4951
50- $ observable ->subscribe (new CallbackObserver (
52+ $ observable ->subscribe (
5153 function ($ v ) use (&$ value ) {
5254 $ value = $ v ;
5355 },
@@ -57,18 +59,19 @@ function ($error) use ($d) {
5759 function () use ($ d , &$ value ) {
5860 $ d ->resolve ($ value );
5961 }
60- )) ;
62+ );
6163
6264 return $ d ->promise ();
6365 }
6466
6567 /**
6668 * Converts a Promise to an Observable sequence
6769 *
68- * @param CancellablePromiseInterface $promise
69- * @return Observable\AnonymousObservable
70+ * @param PromiseInterface $promise
71+ * @return Observable
72+ * @throws \InvalidArgumentException
7073 */
71- public static function toObservable (CancellablePromiseInterface $ promise ): AnonymousObservable
74+ public static function toObservable (PromiseInterface $ promise ): Observable
7275 {
7376 $ subject = new AsyncSubject ();
7477
@@ -87,7 +90,9 @@ function ($error) use ($subject) {
8790 $ disp = $ subject ->subscribe ($ observer );
8891 return new CallbackDisposable (function () use ($ p , $ disp ) {
8992 $ disp ->dispose ();
90- $ p ->cancel ();
93+ if ($ p instanceof CancellablePromiseInterface) {
94+ $ p ->cancel ();
95+ }
9196 });
9297 });
9398 }
0 commit comments