下のコードの
signIn(withEmail:link:)メソッドの{}内の処理の流れがよく分かりません。
self.hideSpinner{}は必ず実行されるのしょうか?
このような構文は何と呼ばれるものですか?

if let email = self.emailField.text {
    showSpinner {
        // [START signin_emaillink]
        Auth.auth().signIn(withEmail: email, link: self.link) { (user, error) in
            // [START_EXCLUDE]
            self.hideSpinner {
                if let error = error {
                    self.showMessagePrompt(error.localizedDescription)
                        return
                }
                self.navigationController!.popViewController(animated: true)
            }
            // [END_EXCLUDE]
        }
        // [END signin_emaillink]
    }
} else {
    self.showMessagePrompt("Email can't be empty")
}