package notify import ( "context" "errors" ) // batchSenderQueueWaitError marks a request that expired or was canceled // while waiting for the shared physical write gate. The transport is still // healthy in this case, so the sender must not become permanently failed. type batchSenderQueueWaitError struct { err error } func (e *batchSenderQueueWaitError) Error() string { if e == nil || e.err == nil { return "batch sender write queue wait failed" } return "batch sender write queue wait failed: " + e.err.Error() } func (e *batchSenderQueueWaitError) Unwrap() error { if e == nil { return nil } return e.err } func newBatchSenderQueueWaitError(err error) error { if err == nil { return nil } var existing *batchSenderQueueWaitError if errors.As(err, &existing) { return err } return &batchSenderQueueWaitError{err: err} } func isBatchSenderQueueWaitError(err error) bool { var queueErr *batchSenderQueueWaitError return errors.As(err, &queueErr) } func isBatchSenderQueueWaitCause(err error) bool { return errors.Is(err, context.Canceled) || isTimeoutLikeError(err) }