when does boost beast calls async_read for http reads

Solution for when does boost beast calls async_read for http reads
is Given Below:

I am using boost beast to invoke a simple RESTful service asynchronously.

http::async_read(_stream, _buffer, _res,
                     beast::bind_front_handler(
                         &Session::on_read,
                         shared_from_this()));

I like to know when on_read gets called?
Does it get called for each and every socket read? Or is it called only after a valid response is fully received? In this case, how does the it know that the response is complete? using content-length header of the response?

How does this change when chunked encoding is used?