https://github.com/CihatAltiparmak/moveit_middleware_benchmark/blob/b91a2434a10033d51122c52ec0685392d41c809f/src/scenarios/scenario_basic_service_client.cpp#L49-L62
As you can see in above code part, we must wait little bit more once wait_for_service returns True which means service is ready and good to go. Because if you send a request to server once wait_for_service returns true, server sometimes may not send a response to client and this gives rise to get stuck in waiting response from server. Our benchmark implementation seems to run well. Just for noting and investigating