Angular 2 retornam dados de RxJs

Eu tenho um serviço com uma função de autenticação -

authenticate(username: string, password: string) {
        let ret;
        let packet = JSON.stringify({
            username: username,
            password: password
        });

        let headers = new Headers();
        headers.append('Content-Type', 'application/json');

        this.http.post('http://localhost:5000/api/authenticate/', packet, {
            headers: headers
        })
        .map(res => res.json())
        .subscribe(
            data => { 
                // put return data into ret
                ret = data.token;
            },
            err => console.log(err),
            () => {
                // this works!
                console.log(ret);
            }
        );

        // get's returned before I put data into it
        return ret;
    }

Então, se eu chamar a função de autenticaçãoconsole.log(authenticate('a', 'b'));, registraundefined desde oret A variável é retornada antes que a função de inscrição possa colocar os dados nela. Como posso retornar os dados de resposta http da função de autenticação? Eu nunca fiz nenhuma programação reativa com o RxJS antes e é isso que o angular 2 parece estar usando.

PS. Existe alguma solução CSP decente para javascript como go channels ou core.async?

questionAnswers(2)

yourAnswerToTheQuestion