How to handle a plugin's blocking call?

I am writing my first plugin but have a question on how long time blocking calls work. In my case I have to make a socket.Http.Request call what will stream data over a long period of time (as in days, weeks; it is receiving device event notification stream).

This means that my code will make a call and expect to never return (it will be a loop where a return will simply re-issue the call). Is this an acceptable model? Or does Vera expect plugins to always return?

Your plugin will have two threads associated with it … If you have one looping thread … things will still work.
You do need to loop and not BLOCK …
If that other thread blocks a little, and another request comes into your plugin … it will DEAD-LOCK restart.