code: func (s *Sender) SendNoRetry(msg *Message) (*Response, error) {
  	if err := checkSender(s); err != nil {
  		return nil, err
  	} else if err := checkMessage(msg); err != nil {
  		return nil, err
  	}
  
  	data, err := json.Marshal(msg)
  	if err != nil {
  		return nil, err
  	}
  
  	req, err := http.NewRequest("POST", gcmSendEndpoint, bytes.NewBuffer(data))
  	if err != nil {
  		return nil, err
  	}
  	req.Header.Add("Authorization", fmt.Sprintf("key=%s", s.ApiKey))
  	req.Header.Add("Content-Type", "application/json")
  
  	resp, err := s.Http.Do(req)
  	if err != nil {
  		return nil, err
  	}
  	defer resp.Body.Close()
  
  	if resp.StatusCode != http.StatusOK {
  		return nil, fmt.Errorf("%d error: %s", resp.StatusCode, resp.Status)
  	}
  
  	body, err := ioutil.ReadAll(resp.Body)
  	if err != nil {
  		return nil, err
  	}
  
  	response := new(Response)
  	err = json.Unmarshal(body, response)
  	return response, err
  }
docs: // SendNoRetry sends a message to the GCM server without retrying in case of
  // service unavailability. A non-nil error is returned if a non-recoverable
  // error occurs (i.e. if the response status is not "200 OK").