code: func NewWriterLevel(w io.Writer, h *sam.Header, level, wc int) (*Writer, error) {
  	bg, err := makeWriter(w, level, wc)
  	if err != nil {
  		return nil, err
  	}
  	bw := &Writer{
  		bg: bg,
  		h:  h,
  	}
  
  	err = bw.writeHeader(h)
  	if err != nil {
  		return nil, err
  	}
  	bw.bg.Flush()
  	err = bw.bg.Wait()
  	if err != nil {
  		return nil, err
  	}
  	return bw, nil
  }
docs: // NewWriterLevel returns a new Writer using the given SAM header. Write
  // concurrency is set to wc and compression level is set to level. Valid
  // values for level are described in the compress/gzip documentation.