code: func (r *DeadlineReader) Read(b []byte) (int, error) {
  	// If we have a deadline, apply it before the 'Read()'
  	if r.Deadline > 0 {
  		deadline := time.Now().Add(r.Deadline)
  		if err := r.Conn.SetDeadline(deadline); err != nil {
  			return 0, err
  		}
  	}
  
  	amount, err := r.Conn.Read(b)
  	if e, ok := err.(net.Error); ok && e.Timeout() {
  		// Don't report back read timeout errors.
  		err = ErrTimeout
  	}
  	return amount, err
  }
docs: // Read implements io.Reader.