23 lines
358 B
Go
23 lines
358 B
Go
|
|
package notify
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"net"
|
||
|
|
"os"
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
func isTimeoutLikeError(err error) bool {
|
||
|
|
if err == nil {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
if errors.Is(err, os.ErrDeadlineExceeded) {
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
var netErr net.Error
|
||
|
|
if errors.As(err, &netErr) && netErr.Timeout() {
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
return strings.Contains(strings.ToLower(err.Error()), "timeout")
|
||
|
|
}
|