code: func (s *StreamReader) Scan(e interface{}, m interface{}) error {
  
  	if s.lasterr != nil {
  		return s.lasterr
  	}
  
  	if s.eventResponse == nil {
  		return &ErrNoMoreEvents{}
  	}
  
  	if e != nil {
  		data, ok := s.eventResponse.Event.Data.(*json.RawMessage)
  		if !ok {
  			return fmt.Errorf("Could not unmarshal the event. Event data is not of type *json.RawMessage")
  		}
  
  		if err := json.Unmarshal(*data, e); err != nil {
  			return err
  		}
  	}
  
  	if m != nil && s.EventResponse().Event.MetaData != nil {
  		meta, ok := s.eventResponse.Event.MetaData.(*json.RawMessage)
  		if !ok {
  			return fmt.Errorf("Could not unmarshal the event. Event data is not of type *json.RawMessage")
  		}
  
  		if err := json.Unmarshal(*meta, &m); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // Scan deserializes event and event metadata into the types passed in
  // as arguments e and m.