Discussed this with @pklinef, @mrmateo and Hugh.  The problem with the original code block is that it would start up a new SourcePollerRunner thread if the source was unchecked.  In the case where there are several hung sources, you could end up getting many of these threads all hung on the same sources concurrently.  So instead, we always return the cached status.  To address your other concern, I made changes to the SourcePollerRunner.bind() which will start a new thread to check status (assuming one isn't already running).  From testing with available, unavailable, and "hung" sources, the SearchUI now responds immediately with the correct source status.