You don't really need to spawn. I will try to provide an example tomorrow. 

But basically the idea is to have smth more like

    receive_request_data(Req) ->
         Data = recv_chunk(Req) , 
        {Data, fun() -> receive_request_data(Req) end};

until eof. (in pseudo code) I will recheck the workflow part.