read-char-no-hangのシークエンス版 read-sequence-no-hangを作りたいのですが、可能でしょうか。

一番、シンプルな実装は以下のようなものになると思います。

(defun read-sequence-no-hang (seq stream &rest rest)
  (when (listen stream)
    (apply #'read-sequence seq stream rest)))

しかし、上記のような実装では、読み込み不可能な状態(ストリーム中にデータは存在しないがEOFではない状態)と、EOFを区別できません。
かといって、read-char-no-hangをシークエンスのサイズ分繰り返すような実装なら、EOF判定が可能だと思われますが、効率が悪そうです(加えてあんまり美しくもありません)。

可能ならCommon lispの仕様の範囲で実装できたらいいと思います。

よろしくお願いいたします。