function createReadCursor(string $query, array $params = array()): \React\Promise\PromiseInterface {
        if($this->goingAway) {
            return \React\Promise\reject((new \Plasma\Exception('Client is closing all connections')));
        }
        
        $connection = $this->getOptimalConnection();
        
        try {
            return $connection->createReadCursor($this, $query, $params);
        } catch (\Throwable $e) {
            $this->checkinConnection($connection);
            throw $e;
        }
    }