When you have an indexed buffer geometry, coordinates of vertices must be taken by indices of vertices in faces. So you have to work with .index property.
Take a look at this topic: Volume of THREE.BufferGeometry()
It works with both indexed and non-indexed buffer geometries. See, how it gets coordinates for p1 , p2 , p3 vectors in dependence on type of geometry.