Manipulador de conclusão Firebase observer in Swift

Estou fazendo um manipulador de conclusão para uma função que retornará uma lista de objetos. Quando retorna valor pela primeira vez, funciona bem. Porém, quando qualquer alteração ocorre no banco de dados do firebase e, novamente, a observação é chamada, o tamanho da matriz é dobrado. Por que está dobrando?

func getStadiums(complition: @escaping ([Stadium]) -> Void){
  var stadiums: [Stadium] = []
  let stadiumRef = Database.database().reference().child("Stadium")
  stadiumRef.observe(.value, with: { (snapshot) in
    for snap in snapshot.children {
      guard let stadiumSnap = snap as? DataSnapshot else {
        print("Something wrong with Firebase DataSnapshot")
          complition(stadiums)
          return
      }
      let stadium = Stadium(snap: stadiumSnap)
      stadiums.append(stadium)
    }
    complition(stadiums)
  })
}

E chamando assim

getStadiums(){ stadiums
  print(stadiums.count) // count gets doubled up after every observe call
}

questionAnswers(3)

yourAnswerToTheQuestion