Sono in una vergognosa situazione in cui, ancorato a vecchi modi di programmare, sebbene mi sia messo al corrente di varie pratiche più moderne, mi trovo ad avere dubbi che ho pure vergogna a chiedere. Vi presento un caso che mi sembra illogico.

Ho la seguente situazione, in cui c'è la funzione login che chiama la funzione start.
Mi ritrovo una funzione start che prende 2 parametri, mentre la vedo chiamata con un parametro solo.
Vabbè, suppongo che il secondo parametro sia opzionale, vado avanti.
La cosa strana: nel corpo della funzione start c'è una funzione anonima che ha come parametro la variabile response.

Non riesco a capire da dove salta fuori quella variabile response, visto che non la trovo altrove nel programma.
Come viene inizializzata e come fa ad avere uno stato (response.status) se praticamente non esiste?... per me è illogico ma il programma funziona.

Qualcuno disposto a spiegarmi in modo facile il ciclo di vita di quella variabile? Grazie.

codice:
        function login(aLocation) {
            aService.login(version).then(start(aLocation), displayError(true));
        }

        // funzione chiamata dalla precedente
        function start(aLocation, disableWS) {
            return function (response) {        //da dove salta fuori response?
                if (response && (response.status === 200)) {
                    //...
                    anotherService.init(aLocation, disableWS);
                }
            };
        }
Se qualcuno volesse scrivere risposte sulla mia ignoranza, o che leggendo wikipedia o un certo libro c'è tutto pregherei di astenersi, mi vergogno già di mio e non sono riuscito a chiarire il dubbio altrove, quindi preferirei risposte più concrete o al più link dove è spiegato questa che per me è magia nera.