| 920 | return makeWith( |
| 921 | (request) => { |
| 922 | const loop = ( |
| 923 | request: ClientRequest.HttpClientRequest, |
| 924 | redirects: number |
| 925 | ): Effect.Effect<ClientResponse.HttpClientResponse, E, R> => |
| 926 | Effect.flatMap( |
| 927 | client.postprocess(Effect.succeed(request)), |
| 928 | (response) => |
| 929 | response.status >= 300 && response.status < 400 && response.headers.location && |
| 930 | redirects < (maxRedirects ?? 10) |
| 931 | ? loop( |
| 932 | internalRequest.setUrl( |
| 933 | request, |
| 934 | new URL(response.headers.location, response.request.url) |
| 935 | ), |
| 936 | redirects + 1 |
| 937 | ) |
| 938 | : Effect.succeed(response) |
| 939 | ) |
| 940 | return Effect.flatMap(request, (request) => loop(request, 0)) |
| 941 | }, |
| 942 | client.preprocess |