I think the answer is:
when you’r in single page/post/cpt view ( you’r checking it with is_single()
) you always should have $wp_query->post_count
equal 1, but if it is future post/page/cpt than it will result to 0 ( becouse there are function/actions applyed to check if it is future post )
and $posts = $wpdb->get_results($wp_query->request);
that how you’r telling not to apply these functions/actions wich checks for future posts/pages/cpt