ok, so I found the way. For anyone else in the same case, here is an explanation :
I was introduced to Google Cloud via Firebase, therefore Firebase is all I knew about Google Cloud solutions until yesterday. There is little mention, or at least it's not obvious enough, of other Google cloud services from https://firebase.google.com.
Turns out, Google does not have 1, not 2, but 5 different cloud compute options. Firebase's Cloud Function is 1 of them. There are 4 others.
See this good video summary here that goes through each one of the 5 options, and highlights well the differences https://www.youtube.com/watch?v=wzPmgWJ5fpU&feature=youtu.be
So, based on my understanding and my experience, Cloud functions is a serverless solution meant to be used with other Firebase services, such as Firestore, Storage and Hosting. With these services, functions responses are blazing fast.
In order to interact with 3rd party APIs, you need to use one of the other 4 solutions, because response times from requests to 3rd party APIs are far beyond acceptable.
As a guideline, Google recommends a TTFB of up to 200 ms (https://developers.google.com/web/tools/chrome-devtools/network/understanding-resource-timing?hl=ko). And lighthouse has a coded TTFB threshold of 600ms (https://github.com/GoogleChrome/lighthouse/blob/master/lighthouse-core/audits/time-to-first-byte.js). Anyway, it's a guideline.
The closest to Firebase Cloud functions in terms of ease of use is AppEngine. https://cloud.google.com/appengine. The other solutions allow greater flexibility, but also require infrastructure expertise.
AppEngine is a serverless solution that allows you to focus on the back-end code, and keep your costs under control with a PAYG pay scheme.
In terms of coding experience, Firebase C.F is designed to make things much easier for you with the onCall method for instance. AppEngine still remain relatively easy to use and you can get your backend up and ready pretty fast.
Anyway, with AppEngine, and with the same server request and same dependencies as mentioned in the OP (cors, compression, rp, express), I can get the same JSON data in under 1 sec (versus 4.5sec with C.F.). That's quite an improvement, isn't it ? I probably can get that figure even lower.
This said, there are 2 different AppEngine configs : standard and flex. Standard would be the obvious choice for most developers I'm guessing. If you pick flex, you may want to read this first : Pricing of Google App Engine Flexible env, a $500 lesson
From a purely Google customer POV, i'm still not sure why I have to involve 2 different serverless services to make my things work, but that's the way.
I just wish Google's services were better described on their Firebase website, it would have saved me some precious time. I learned about AppEngine thanks to someone's comment on reddit. I wish the Google guys could have at least pointed me to their other solutions as a reply.