| 552 | }) |
| 553 | |
| 554 | const waitForFinish = (nodeRequest: Http.ClientRequest, request: HttpClientRequest) => |
| 555 | Effect.callback<void, Error.HttpClientError>((resume) => { |
| 556 | function onError(cause: Error) { |
| 557 | resume(Effect.fail( |
| 558 | new Error.HttpClientError({ |
| 559 | reason: new Error.TransportError({ |
| 560 | request, |
| 561 | cause |
| 562 | }) |
| 563 | }) |
| 564 | )) |
| 565 | } |
| 566 | nodeRequest.once("error", onError) |
| 567 | |
| 568 | function onFinish() { |
| 569 | nodeRequest.off("error", onError) |
| 570 | resume(Effect.void) |
| 571 | } |
| 572 | nodeRequest.once("finish", onFinish) |
| 573 | |
| 574 | return Effect.sync(() => { |
| 575 | nodeRequest.off("error", onError) |
| 576 | nodeRequest.off("finish", onFinish) |
| 577 | }) |
| 578 | }) |
| 579 | |
| 580 | class NodeHttpResponse extends NodeHttpIncomingMessage<Error.HttpClientError> implements HttpClientResponse, Pipeable { |
| 581 | readonly [Response.TypeId]: typeof Response.TypeId |