| 16:48 | <devsnek> | mfw `return promise` can throw in async generators but not async functions |
| 17:32 | <ljharb> | devsnek: example? |
| 17:32 | <devsnek> | ljharb: `return Promise.reject()` |
| 17:33 | <ljharb> | why would that throw |
| 17:33 | <devsnek> | `return` performs an await in async generators |
| 17:33 | <devsnek> | https://gc.gy/56923403.png |
| 17:34 | <Bakkot> | yeah that's pretty weird |
| 17:35 | <Bakkot> | otoh does anyone actually `return` in a generator? |
| 17:35 | <devsnek> | i do |
| 17:35 | <devsnek> | but its not that common |
| 17:35 | <Bakkot> | why? |
| 17:35 | <Bakkot> | (sincerely; I'm curious what the use case is) |
| 17:35 | <devsnek> | my engine262 evaluator is built on generators |
| 17:35 | <devsnek> | not the async kind though |
| 17:36 | <ljharb> | yes that is very weird |
| 17:36 | <devsnek> | Bakkot: https://github.com/engine262/engine262/blob/parser/src/runtime-semantics/IfStatement.mjs#L21 |
| 17:36 | <Bakkot> | what does `return` do for you there? |
| 17:36 | <devsnek> | its how i return values |
| 17:37 | <devsnek> | i use it like a normal return |
| 17:37 | <Bakkot> | hmm |
| 17:37 | <Bakkot> | I guess my question is, presumably this bottoms out somewhere where it isn't just generators deferring to generators |
| 17:37 | <Bakkot> | and that is the part I am interested in |
| 17:37 | <devsnek> | https://github.com/engine262/engine262/blob/parser/src/helpers.mjs#L141-L153 |
| 17:38 | <devsnek> | https://github.com/engine262/engine262/blob/parser/src/abstract-ops/function-operations.mjs |
| 17:39 | <devsnek> | oops |
| 17:39 | <devsnek> | https://github.com/engine262/engine262/blob/parser/src/abstract-ops/function-operations.mjs#L124-L127 |
| 17:39 | <Bakkot> | aha |
| 17:39 | <Bakkot> | neat |