docs: def _onlooker_phase(self):
          '''Well-performing bees (chosen probabilistically based on fitness
          score) have a value merged with a second random bee
          '''
  
          self.__verify_ready()
          self._logger.log('debug', 'Onlooker bee phase')
          modified = []
          for _ in self._employers:
              chosen_bee = np.random.choice(
                  self._employers,
                  p=[e.probability for e in self._employers]
              )
              if self._processes <= 1:
                  new_values = self._merge_bee(chosen_bee)
                  self._move_bee(chosen_bee, new_values)
                  self.__update(
                      chosen_bee.score,
                      chosen_bee.values,
                      chosen_bee.error
                  )
              else:
                  modified.append((
                      chosen_bee,
                      self._pool.apply_async(self._merge_bee, [chosen_bee])
                  ))
          for pair in modified:
              self._move_bee(pair[0], pair[1].get())
              self.__update(pair[0].score, pair[0].values, pair[0].error)