title: How to make asynchronous HTTP call with callback in Lua?
body: <p>I need to make asynchronous HTTP call to my server in order to receive XML response.
  After I get the response I will call a [previously specified] function if it is success or some other function if it's an error.</p>
  
  <p>So what I thought about in the first place was coroutines. Unfortunately, after I make the http.get call I cannot yield, as it will wait for the whole thing to finish. I know I can use separate functions to read the response, however I have to wait at least for the first bytes of data in order for this function to be triggered which would allow me to yield. Anyway, for what I wan to do using coroutines doesn't look like the way to go.</p>
  
  <p>Then I've tried calling a C function from lua, creating separate thread to get the XML and then call a function in Lua, however this doesn't work because of lua_state changing after a new thread is created. Before the thread is created I can see 3 parameters on the stack, and after creation of the new thread [I am passing lua_State as the argument] it has only one. Anyway, from what I understand lua_State will be closed once the original cfunction call is finished, so I won't be able to call back.</p>
  
  <p>Since I'm just starting with lua and I'm even less familiar with lua to c bindings I can only hope I'm making some stupid mistakes and it will be easy to solve. For now however I'm stuck with no idea on how to progress further.</p>
  
  <p>The story behind this issue:
  I'm porting my game from Cocos2D objective C framework to Cocos2d-X C++ framework. I want to use Lua bindings as I think I will fail to port it to C++. Anyway I want to do it in Lua. 
  So I've got a scene where someone accesses a list of inventory they have in the game. If the response is immediate they will basically see a window opened with list of inventory. However, if it takes a tad bit longer to get the data [connection issues, sever overload... whatever] screen will fade out and some animation indicating data transfer will be shown on screen. At least this is how it works on the objc version of the game and I want the same thing.</p>
  
  <p>Is there something I have missed during my research, is it possible to do it?</p>
  
  <p>BTW I have seen <a href="https://stackoverflow.com/questions/5795419/lua-socket-asynchronous-calls">Lua socket asynchronous calls</a> and it doesn't help me because it still waits for the beginning of the transfer before it will start another one.</p>