function testEmitterPromise() { $click = new observr\Emitter('click'); $getPromise = function ($result, $error = null) use($click) { if ($error) { $click->fail($error); } else { $click->complete($result); } return $click->promise(); }; $button = new Mock\Button(); $c = 0; $getPromise('hello')->then(function ($value) use(&$c) { $c++; }); $click($button); $this->assertEquals(1, $c); }