Array.map() does

The map() method creates a new array with the results of calling a function for every array element. The map() method calls the provided function once for each element in an array, in order. map() does not execute the function for empty elements. map() does not change the original array.
Array.reduce() does

The reduce() method executes a reducer function for each value of an array. reduce() returns a single value which is the function’s accumulated result. reduce() does not execute the function for empty array elements. reduce() does not change the original array
superagent() does

SuperAgent is light-weight progressive ajax API crafted for flexibility, readability, and a low learning curve after being frustrated with many of the existing request APIs. It also works with Node.
-
With normal Promise .then() syntax

-
with async / await syntax

What is a promise ?
Java script is work as async so when it have a request need time to exicute we should to force it to wait to recive response there are two ways to force it to wait , using promise (.then ) or by ( async and await) to let compiler wait until the response have done. A promise is an object that may produce a single value some time in the future : either a resolved value, or a reason that it’s not resolved, A promise may be in one of 3 possible states: fulfilled, rejected, or pending.
Are all callback functions considered to be Asynchronous?
The callback will be synchronous when the higher order function which calls it is calling it synchronously. Inversely if it is called within the context of the execution branch of an asynchronous operation it will be asynchronous