1--TEST-- 2Test unfinished fiber with suspend in finally 3--EXTENSIONS-- 4fiber 5--FILE-- 6<?php 7 8$fiber = new Fiber(function (): object { 9 try { 10 try { 11 echo "fiber\n"; 12 return new \stdClass; 13 } finally { 14 echo "inner finally\n"; 15 Fiber::suspend(); 16 echo "after await\n"; 17 } 18 } catch (Throwable $exception) { 19 echo "exit exception caught!\n"; 20 } finally { 21 echo "outer finally\n"; 22 } 23 24 echo "end of fiber should not be reached\n"; 25}); 26 27$fiber->start(); 28 29unset($fiber); // Destroy fiber object, executing finally block. 30 31echo "done\n"; 32 33?> 34--EXPECTF-- 35fiber 36inner finally 37outer finally 38done 39