File tree 1 file changed +15
-7
lines changed
1 file changed +15
-7
lines changed Original file line number Diff line number Diff line change 13
13
namespace PHPinnacle \Ensign ;
14
14
15
15
use Amp ;
16
+ use Amp \Deferred ;
16
17
use Amp \Promise ;
17
- use Amp \Success ;
18
18
19
19
final class Processor
20
20
{
@@ -67,14 +67,22 @@ public function interrupt(string $interrupt, callable $handler): void
67
67
*/
68
68
public function execute (callable $ handler , array $ arguments ): Promise
69
69
{
70
- return Amp \call (function () use ($ handler , $ arguments ) {
71
- $ result = $ this ->executor ->execute ($ handler , $ arguments );
70
+ $ deferred = new Deferred ;
72
71
73
- if ($ result instanceof \Generator) {
74
- return new Subroutine ($ result , $ this ->resolver );
75
- }
72
+ Amp \Loop::defer (function () use ($ deferred , $ handler , $ arguments ) {
73
+ try {
74
+ $ result = $ this ->executor ->execute ($ handler , $ arguments );
75
+
76
+ if ($ result instanceof \Generator) {
77
+ $ result = new Subroutine ($ result , $ this ->resolver );
78
+ }
76
79
77
- return $ result ;
80
+ $ deferred ->resolve ($ result );
81
+ } catch (\Throwable $ error ) {
82
+ $ deferred ->fail ($ error );
83
+ }
78
84
});
85
+
86
+ return $ deferred ->promise ();
79
87
}
80
88
}
You can’t perform that action at this time.
0 commit comments