요청 시간 예산의 소비

DNS, connect, read가 각각 새 timeout을 받지 않고 하나의 deadline을 나눠 쓴다.

  1. 요청 시작

    절대 endNanos를 한 번 계산한다.

  2. DNS 완료

    소비된 시간만큼 remaining이 줄어든다.

  3. connect 제한

    현재 남은 범위 안에서 연결한다.

  4. read 제한

    마지막 남은 시간만 응답을 기다린다.

핵심: 각 단계 뒤 deadline이 소진되면 다음 네트워크 작업을 시작하지 않는다.