(promiseGenerator, { callback, signal, timeout = -1 } = {})
| 700 | } |
| 701 | |
| 702 | static async run(promiseGenerator, { callback, signal, timeout = -1 } = {}) { |
| 703 | let value = undefined |
| 704 | let done = undefined |
| 705 | if (timeout < 0) { |
| 706 | timeout = Number.MAX_SAFE_INTEGER |
| 707 | } |
| 708 | timeout = Date.now() + timeout |
| 709 | do { |
| 710 | ; ({ value, done } = await Promise.resolve(promiseGenerator.next(value))) |
| 711 | if (value instanceof Promise) { |
| 712 | value = await value |
| 713 | } |
| 714 | if (callback) { |
| 715 | ; ({ value, done } = await Promise.resolve(callback.call(promiseGenerator, { value, done }))) |
| 716 | } |
| 717 | if (value instanceof Promise) { |
| 718 | value = await value |
| 719 | } |
| 720 | } while (!done && !signal?.aborted && timeout > Date.now()) |
| 721 | return value |
| 722 | } |
| 723 | static async *asGenerator({ callback, generator, signal, timeout = -1 } = {}) { |
| 724 | let value = undefined |
| 725 | let done = undefined |
no outgoing calls
no test coverage detected