This is older code (unrelated to the PR), but I realize now, and I don't know if it's by design, that the queue the completion block is called is kind of "arbitrary": it'll be called in whatever queue the KVO notification was triggered. Maybe it should dispatch it or have the API accept a dispatch queue where it should dispatch the block or something like that?