class ActiveRecord::Promise

def then(&block)

# => "POST TITLE"
Post.async_pick(:title).then { |title| title.upcase }.value

when the value is accessed:
Returns a new +ActiveRecord::Promise+ that will apply the passed block
def then(&block)
  Promise.new(@future_result, @block ? @block >> block : block)
end