geniousperson, Смотрите, если Вы вополняете запрос на тот сайт из JS - то он выполняется в браузере посетителя в рамках Вашего сайта. Естественно когда отправляется запрос напрямую (тупо открыть получившуюся ссылку во вкладке браузера) - то все откроется, но для того, чтобы Ваш сайт имел доступ по AJAX к другому сайту - другой сайт должен это разрешить. Делается это через заголовки CORS тем сайтом, который разрешает, а не спрашивает с него данные. Иначе так можно было положить любой сайт, разместив AJAX запрос на популярном ресурсе на чужой сайт и все, кто открыл сраницу - делали бы запрос, что приводило бы к небольшой DoS-атаке. Таким образом, чтобы решить Вашу проблему - Вам нужно отправить запрос на свой бэк, который сформирует обычный запрос на мунволк, подождет с него ответ и отдаст его скрипту Вашего фронта. Потому это и получается проксирование через Ваш бэк.
AlexZeDim, async/await - это по сути те же промисы и для кодера лишь синтаксический сахар. Вам нужно выполнить функцию и после ее отработки уже идти дальше. Собственно вариант, что Вам предложил - будет работать точно.
ffhhttee, Вам хранить надо какие файлы? Картинки, css, js и прочее, которое участвует в генерации страницы? - тогда нет смысла, поскольку, как описал Igor Karachentsev на их "раскодирование" придется тратить ресурсы. Если надо хранить файлы, которые загружают пользователи, без прямых ссылок на них, то может и есть резон. Вы какую цель преследуете?
Роман Алексеевич, Добавьте client.end() после каждого write, а то похоже сервер ожидает принятия данных от нас, а мы ему FIN не отправляем. Либо делайте отправку именно end-ом а не write-ом.