| 157 | }) |
| 158 | |
| 159 | const waitForFinish = (nodeRequest: Http.ClientRequest, request: ClientRequest.HttpClientRequest) => |
| 160 | Effect.async<void, Error.RequestError>((resume) => { |
| 161 | function onError(cause: Error) { |
| 162 | resume(Effect.fail( |
| 163 | new Error.RequestError({ |
| 164 | request, |
| 165 | reason: "Transport", |
| 166 | cause |
| 167 | }) |
| 168 | )) |
| 169 | } |
| 170 | nodeRequest.once("error", onError) |
| 171 | |
| 172 | function onFinish() { |
| 173 | nodeRequest.off("error", onError) |
| 174 | resume(Effect.void) |
| 175 | } |
| 176 | nodeRequest.once("finish", onFinish) |
| 177 | |
| 178 | return Effect.sync(() => { |
| 179 | nodeRequest.off("error", onError) |
| 180 | nodeRequest.off("finish", onFinish) |
| 181 | }) |
| 182 | }) |
| 183 | |
| 184 | class ClientResponseImpl extends HttpIncomingMessageImpl<Error.ResponseError> |
| 185 | implements ClientResponse.HttpClientResponse |