flowjs: llamada del método `join`. El método no se puede invocar en mixto

Digamos que tengo animales constantes, con los que importo

import animals from './animals

Digamos que la constante de los animales es:

{
  hoofed:[
    'horses',
    'sheep',
    'goats'
],
  feline: [
  'lions',
  'tigers'
],
  canine: [
    'dogs',
    'wolves'
  ]
}

Digamos que quiero construir una consulta de URL para la API de algunos animales y escribir el siguiente código:

const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')

Ahora este código genera una cadena de animales, separados por la palabra animal y espacios en blanco, que luego se codifica en URL y coincide correctamente con la superficie API de destino.

Sin embargo, FlowJS rechaza este código con:

13:   const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
                                                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call of method `join`. Method cannot be called on
 13:   const fq = Object.values(animals).reduce((memo, animalList) => memo + `animal:${animalList.join(' animal:')} `, '')
                                                                                                ^^^^^^^^ mixed

Mi pregunta es: ¿por qué? La matriz claramente no está mezclada, es una constante y Object.valuesdebería estar devolviendo algo de tipo [cadena]?

¿Qué es la detección de flujo y cómo puedo evitarlo?