code: func New(ms uint64, entropy io.Reader) (id ULID, err error) {
  	if err = id.SetTime(ms); err != nil {
  		return id, err
  	}
  
  	switch e := entropy.(type) {
  	case nil:
  		return id, err
  	case MonotonicReader:
  		err = e.MonotonicRead(ms, id[6:])
  	default:
  		_, err = io.ReadFull(e, id[6:])
  	}
  
  	return id, err
  }
docs: // New returns an ULID with the given Unix milliseconds timestamp and an
  // optional entropy source. Use the Timestamp function to convert
  // a time.Time to Unix milliseconds.
  //
  // ErrBigTime is returned when passing a timestamp bigger than MaxTime.
  // Reading from the entropy source may also return an error.
  //
  // Safety for concurrent use is only dependent on the safety of the
  // entropy source.