public function testWaterfallWithError() { $called = 0; $tasks = array(function ($callback, $errback) use(&$called) { $callback('foo'); $called++; }, function ($foo, $callback, $errback) { $e = new \RuntimeException('whoops'); $errback($e); }, function ($callback, $errback) use(&$called) { $callback('bar'); $called++; }); $callback = $this->createCallableMock($this->never()); $errback = $this->createCallableMock($this->once()); Util::waterfall($tasks, $callback, $errback); $this->assertSame(1, $called); }