That was my intention from the origin. As not English native speaker, I probably not stated it clearly, sorry for that.
In the end, I managed to wrap around code from Indy to avoid inherent differences with my interface.
One thing that stuck me the most: GStack variable. If you do not create something that does TIdStack.IncUsage you will quickly find nil-related exceptions.
I personally stuck with it by manually creating TIdSocketHandle objects and calling AllocateSocket on them. I know that TIdComponent.InitComponent does the job, but, IdBuffer.Create also does it.
My first thought was: remove GStack and make TIdStack.Instance(), probably with lock free pattern https://stackoverflow.com/a/24657705 and without slow critical section. It would be code-breaking change.
Anyway, it is time to stop complain, create github account, and start asking for pull requests. @Remy Lebeau you are, for lack of other words, indispensable resource of Delphi community. Big thank you for your time.