AM
2) я предложил локальный set_error_handler + restore_error_handler
3) ты согласился, что вариант и привёл беспроблемный синхронный код
4) потом я допетрил, что будут баги на асинхонном
5) ?????
Size: a a a
AM
MM
KN
KN
AM
KN
MM
AM
AM
MM
KN
KN
#BydlocodersLivesMatter
MM
try
{
yield mkdir($dir, 0777, true);
}
catch(\Throwable $throwable) { }
yield $this->blah()
mkdir($dir, 0777, true)->onResolve(
function(?bool $result, ?\Throwable $throwable) use ($dir) {
if($throwable !== null) {
throw $throwable;
}
is_dir($dir)->onResolve(
function(?bool $result, ?\Throwable $throwable) {
if($throwable !== null) {
throw $throwable;
}
$this->blah()->onResolve(...);
}
);
}
);
MM
MM
AM
try
{
yield mkdir($dir, 0777, true);
}
catch(\Throwable $throwable) { }
yield $this->blah()
mkdir($dir, 0777, true)->onResolve(
function(?bool $result, ?\Throwable $throwable) use ($dir) {
if($throwable !== null) {
throw $throwable;
}
is_dir($dir)->onResolve(
function(?bool $result, ?\Throwable $throwable) {
if($throwable !== null) {
throw $throwable;
}
$this->blah()->onResolve(...);
}
);
}
);
private function get(string $key) : Promise
{
return call(function () {
// note: error suppression is still faster than `exists`
set_error_handler(self::$emptyErrorHandler);
$item = $this->storage[$key];
restore_error_handler();
});
...
yield $obj->get('blah');
AM
AM
MM
AM