Filter get_user_by instead of replace function

If you look at the source get_user_by() is not too much more than a kind of interface to the WP_User object. You can see that it uses the methods ‘get_data_by()`:

$userdata = WP_User::get_data_by( $field, $value );

And init:

$user = new WP_User;
$user->init( $userdata );

Neither offer any filters.

Nor does the cache object used by get_data_by()

I don’t see a way to do it without replacing that function. Maybe somebody can spot something I don’t.