package utils

import (
	"net"
	"net/url"
)

// IsTimeout takes an error returned from (generally) the http package and determines if it is a timeout error.
func IsTimeout(err error) bool {
	switch e := err.(type) {
	case net.Error:
		return e.Timeout()
	case *url.Error:
		if t, ok := e.Err.(net.Error); ok {
			return t.Timeout()
		}
		return false
	default:
		return false
	}
}