Existe uma maneira de definir o tempo limite de resposta para Indy Tidhttp recebe?

Eu construí um aplicativo simples de monitoramento de sites usando o componente Indy TIdhttp. Quero detectar quando uma página designada não é retornada dentro de um período de tempo especificado (estou usando 5000 milissegundos). Como teste, criei uma página em um site que intencionalmente leva 15 segundos para responder. Mas não consigo fazer com que meu procedimento desista após os 5 segundos. eu tenteiTempo de ler esgotado, umasolução sugerida usando um timer e oOnWorkBegin evento (nunca foi capaz de obterOnWorkBegin disparar imediatamente após a chamada).

Nota Não estou preocupado com um tempo limite de conexão. Minha preocupação aqui é um tempo limite para o servidor retornar com uma página.

Aqui está um código fonte que eu tenho usado. Ele contém muitos dos elementos que eu refiro.

procedure TServLogic.WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  GetTimer.Enabled := True;
end;
procedure TServLogic.WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  GetTimer.Enabled := False;
end;

procedure TServLogic.GetTimerTimer(Sender: TObject);
begin
  idHttp.Disconnect(True);
end;

procedure TServLogic.CallHttp(mlink: String): String;
begin
  result := '';
  GetTimer := TTimer.create(nil);
  GetTimer.OnTimer := GetTimerTimer;
  GetTimer.Interval := 5000;
  try
    IdHTTP := TIdHTTP.create(nil);
    idhttp.ReadTimeout := 5000;
    IdHttp.OnWorkBegin := WorkBegin;
    IdHttp.OnWorkEnd   := WorkEnd;
    try
      result  := idhttp.get(mLink);
    except
      on e:exception do begin
        AppendToLog('Server did not respond withing 5 seconds');
      end;
    end;
  finally
    GetTimer.Free;
    idhttp.free;
  end;
end;

questionAnswers(2)

yourAnswerToTheQuestion