class Plumb::Deferred

def cached_type

def cached_type
synchronize do
hed_type = @definition.call
.define_singleton_method(:cached_type) do
ached_type
hed_type

def call(result)

def call(result)
  cached_type.call(result)
end

def initialize(definition)

def initialize(definition)
  @lock = Mutex.new
  @definition = definition
  @cached_type = nil
  # freeze
end