device matching: run every iteration of generator async
Code was calling the generator as if it were a function, expecting to be able
to loop through the results synchronously. But since it is a generator, every
iteration of the loop needs to be called asynchronously to avoid complaints
about the I/O waits from HA.
Issue #2501