На самом деле, _hi_CreateEvent не совершает никаких вызовов.
Он просто дает поручение ПРЕДЫДУЩЕМУ _hi_onEvent сделать ЕЩЕ ОДИН вызов события.
Это поручение реализовано установкой поля TData.next на указатель этого следующего event-а, и 7-го бита в TData.data_type
А сделано для того, чтобы уменьшить вложенность по стеку длинной цепочки элементов (обычно ограничение по стеку на уровне нескольких тысяч).
И делать _hi_CreateEvent НЕЛЬЗЯ, если необходимо обязательно произвести в этом же методе какие-то действия ПОСЛЕ события
К примеру
procedure THIConvertor._work_doConvert12(var _Data:TData; Index:word);//StrToStream
var S:string;
St:PStream;
len:cardinal;
begin
S := ReadString(_Data,_data_Data);
St := NewMemoryStream;
len := Length(S);
St.Write(s[1],len);
St.Position := 0;
_hi_OnEvent(_event_onResult,St); //Тут НИЗЯ!!!
St.free;
end;