em.rb

 1# frozen_string_literal: true
 2
 3require "em_promise"
 4
 5module EM
 6	def self.promise_defer(klass: EMPromise, &block)
 7		promise = klass.new
 8		EventMachine.defer(
 9			block,
10			promise.method(:fulfill),
11			promise.method(:reject)
12		)
13		promise
14	end
15
16	def self.promise_timer(timeout)
17		promise = EMPromise.new
18		EM.add_timer(timeout) do
19			promise.fulfill(nil)
20		end
21		promise
22	end
23end