bus = new MessageBus( [ new HandleMessageMiddleware( new HandlersLocator(CallableFirstParameterExtractor::forCallables($queryHandlers)) ), ] ); } public function ask(Query $query): ?Response { try { /** @var HandledStamp $stamp */ $stamp = $this->bus->dispatch($query)->last(HandledStamp::class); return $stamp->getResult(); } catch (NoHandlerForMessageException) { throw new QueryNotRegisteredError($query); } } }