Sonar Quality Gate behavior in Jenkins pipeline is unstable

I have some pipelines in Jenkins, with the SonarQube stage (Version: 6.7.1, build 35068)
In some builds it is aborted due to time out:

12:19:01 Sleeping for 3 min 0 sec
[Pipeline] timeout
12:22:10 Timeout set to expire in 25 min
[Pipeline] waitForQualityGate
12:22:10 Checking status of SonarQube task 'XXXXXXXXXX' on server 'Sonar'
12:22:10 SonarQube task 'XXXXXXXXXX' status is 'PENDING'
12:47:10 Cancelling nested steps due to timeout

and in some other builds it pass:

13:56:47 Sleeping for 3 min 0 sec
[Pipeline] timeout
13:59:47 Timeout set to expire in 25 min
[Pipeline] {
[Pipeline] waitForQualityGate
13:59:47 Checking status of SonarQube task 'XXXXXXXXXX' on server 'Sonar'
13:59:47 SonarQube task 'XXXXXXXXXXXX' status is 'SUCCESS'
13:59:47 SonarQube task 'XXXXXXXXXXXX' completed. Quality gate is 'WARN'

Trigger command in bitbucket file:

    stage('Sonar Quality Gate') {
        sleep 180
        timeout(time: 25, unit: 'MINUTES') {
            def qg = waitForQualityGate()
                    if (!(qg.status == 'OK' || qg.status == 'WARN')) {
                        error "Pipeline aborted due to quality gate failure: ${qg.status}"
                    }
        }
    }

what might be the reason for it? how can I keep it stable? can it be network isssue?