RubyではほとんどのクラスはObjectクラスを継承しています。 極まれにObjectクラスの機能が多すぎることがあります。 そういうときはBasicObjectを継承します。 しかし、Objectの一部の便利なメソッドだけは使いたい。 そういうわがままな要望があります。
そんなときにActiveRecord::Promiseの実装が参考になります。
[:class, :respond_to?, :is_a?].each do |method| define_method(method, ::Object.instance_method(method)) end
おまけ
「なんでActiveRecord::PromiseはBasicObjectを継承しているのだろう?」と思ってコミット履歴を見てみました。
PoC: Active Record API for general async queries · rails/rails@03e435b · GitHub
byrootさんが最初にコミットした時点でBasicObjectを継承していました。 なにそれ?すごい。