Spaces:
Running
Running
promises | |
await: promise | |
"Pause the current process until promise returns, signal an exception if the promise was rejected" | |
| sem result isError | | |
isError := false. | |
sem := Semaphore new. | |
promise | |
then: [:value | | |
result := value. | |
sem signal]; | |
catch: [:error | | |
result := error. | |
isError := true. | |
sem signal]. | |
sem wait. | |
isError ifTrue: [JSException error: result]. | |
^result |