Imo find first shouldn't take the 'array' parameter into consideration. I think the logic should be here:
```php
if (!$data) {
    return null;
}
return is_object($data) ? $data->rewind() : reset($data);
```
This will imo break some find first tests based on the `MockSource`, but removing the `['query']` access should make it works again.