make($provider_class_name)->$method(...$arguments); } catch (\Throwable $e) { $this->latest_error = $e->getMessage(); Log::warning("Failed calling method {$method} ({$provider}): {$this->latest_error}"); } } throw new \Exception("Could not get market data: {$this->latest_error}"); } }