Erstellen einer generischen Methode mit AlamoFire in Swift

Ich verwende AlamoFire für meine API-Aufrufe und habe in meinem gesamten Projekt so etwas:

static func login(userName: String, password: String) -> User {
    let parameters = ["userName": userName , "password": password]
    let user = User()
    Alamofire.request(.POST, "myserver.com/login", parameters: parameters, encoding: .JSON)
        .validate()
        .responseObject { (response: Response<User, NSError>) in
            switch response.result {
            case .Success(let value):
                user.valueHandle?(value)
            case .Failure(let error):
                user.errorHandle?(error)
            }
    }

    return user
}

(sehenhttps: //stackoverflow.com/a/37949671/40632 wie ich auf den obigen Code gekommen bin).

Das Problem ist, dass ich viele andere Objekte als User habe und dass sich der Code nur mit einem anderen Objekttyp wiederholt. Daher versuche ich, eine generische Methode zu erstellen:

static func sendRequest<T>(method: Alamofire.Method, urlString: String, parameters: [String: AnyObject]?) -> T {
        let response : T
        Alamofire.request(method, urlString, parameters:parameters)
            .validate()
            .responseObject { (response: Response<T, NSError>) in
                switch response.result {
                case .Success(let value):
                    response.valueHandle?(value)
                case .Failure(let error):
                    response.errorHandle?(error)
                }
        }

        return response 
 }

Aber Swift beschwert sich:

Cannot convert value of type '(Response<T, NSError>) -> ()' to expected argument type 'Response<_, NSError> -> Void'

Dies ist, damit ich so etwas machen kann:

User.swift
static func login(userName: String, password: String) -> User {
        let parameters = ["userName": userName, "password": password]
    return sendRequest<User>(.GET, "http://myserver.com/users", parameters)
}

und in meiner Vorwahl:

User.login(txtUserName.text!, password: txtPassword.text!)
            .success { (value) in
                var user = value as! User
                //do something with user
            }
            .error { (error) in
                //show error
            }

Was mache ich nicht richtig?