retorno rápido de Firebase en tarea asincrónica

Tengo un problema con Firebase SDK para iOS en Swift 2. Estoy tratando de configurar una imagen para descargar desde el almacenamiento de Firebase. Cuando llamo a la función, devuelve nil. Creo que es porque la tarea de descarga proporcionada por el sdk de Firebase es asíncrona, por lo que cuando el estado de retorno se llama uid, lo que es necesario no se establece porque la tarea no ha terminado. ¿Cómo puedo resolver esto para que me devuelvan la imagen correcta?

override func viewDidLoad() {
   super.viewDidLoad()
   imageView.image = downloadProfilePicFirebase()
}

La función de descarga de Firebase:

func downloadProfilePicFirebase() -> UIImage{

    print("download called")

    //local paths
    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    let documentDirectorPath:String = paths[0]
    let imagesDirectoryPath = documentDirectorPath.stringByAppendingString("/profiles")

    var uid = String()


    if let user = FIRAuth.auth()?.currentUser {
        let uid = user.uid

        let storageRef = FIRStorage.storage().referenceForURL("gs://myid.appspot.com")
        let profilePicRef = storageRef.child("/profile_pic.jpg")

        let homeDir: NSURL = NSURL.fileURLWithPath(NSHomeDirectory())
        let fileURL: NSURL = homeDir.URLByAppendingPathComponent("Documents").URLByAppendingPathComponent("profiles").URLByAppendingPathComponent("profile_pic").URLByAppendingPathExtension("jpg")

        // Download to the local filesystem
        let downloadTask = profilePicRef.writeToFile(fileURL) { (URL, error) -> Void in
            if (error != nil) {
                print(error)
            } else {
                // svaed localy now put in ImageView
            }
        }
    }
   return UIImage(contentsOfFile: "\(imagesDirectoryPath)"+"/profile_pic_user_"+uid+".jpg")!
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta