File tree Expand file tree Collapse file tree 1 file changed +15
-7
lines changed Expand file tree Collapse file tree 1 file changed +15
-7
lines changed Original file line number Diff line number Diff line change 1313namespace PHPinnacle \Ensign ;
1414
1515use Amp ;
16+ use Amp \Deferred ;
1617use Amp \Promise ;
17- use Amp \Success ;
1818
1919final class Processor
2020{
@@ -67,14 +67,22 @@ public function interrupt(string $interrupt, callable $handler): void
6767 */
6868 public function execute (callable $ handler , array $ arguments ): Promise
6969 {
70- return Amp \call (function () use ($ handler , $ arguments ) {
71- $ result = $ this ->executor ->execute ($ handler , $ arguments );
70+ $ deferred = new Deferred ;
7271
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+ }
7679
77- return $ result ;
80+ $ deferred ->resolve ($ result );
81+ } catch (\Throwable $ error ) {
82+ $ deferred ->fail ($ error );
83+ }
7884 });
85+
86+ return $ deferred ->promise ();
7987 }
8088}
You can’t perform that action at this time.
0 commit comments