class EventMachine::Completion

def change_state(state, *args)

of :succeeded or :failed, then :completed callbacks will also be called.
Enter a new state, setting the result value if given. If the state is one
def change_state(state, *args)
  @value = args
  @state = state
  EM.schedule { execute_callbacks }
end