public function testFinallyAfterReject() { $phpunit = $this; $promise = new Promise(function ($resolve, $reject) { $reject(0); }); $promise->then(function ($data) use($phpunit) { $phpunit->fail('This should not run!'); }, function ($data) use($phpunit) { $phpunit->assertEquals($data, 0); return $data + 1; })->catch(function ($data) use($phpunit) { $phpunit->assertEquals($data, 1); return $data + 1; })->finally(function ($data) use($phpunit) { $phpunit->assertEquals($data, 2); }); }