(controller)
| 182 | const stream = new ReadableStream<WorkspaceRuntimeEvent<E>>( |
| 183 | { |
| 184 | async pull(controller) { |
| 185 | if (claimed === "result") { |
| 186 | controller.error(new Error("runtime handle already consumed by result()")); |
| 187 | return; |
| 188 | } |
| 189 | claimed = "stream"; |
| 190 | reader ??= handle.getReader() as ReadableStreamDefaultReader<WorkspaceRuntimeEvent<E>>; |
| 191 | try { |
| 192 | const next = await reader.read(); |
| 193 | if (next.done) { |
| 194 | reader.releaseLock(); |
| 195 | reader = undefined; |
| 196 | controller.close(); |
| 197 | } else controller.enqueue(next.value); |
| 198 | } catch (error) { |
| 199 | reader?.releaseLock(); |
| 200 | reader = undefined; |
| 201 | controller.error(error); |
| 202 | } |
| 203 | }, |
| 204 | async cancel(reason) { |
| 205 | if (reader) { |
| 206 | try { |
nothing calls this directly
no test coverage detected