code: func (sc *syncClient) poll(sid SyncSessionID) {
  	for {
  		var sn SyncNotes
  		poll := sc.client.Go("SeesawSync.Poll", sid, &sn, nil)
  		select {
  		case <-poll.Done:
  			if poll.Error != nil {
  				log.Errorf("Synchronisation polling failed: %v", poll.Error)
  				return
  			}
  			for _, note := range sn.Notes {
  				sc.dispatch(&note)
  			}
  
  		case <-sc.quit:
  			sc.stopped <- true
  			return
  
  		case <-time.After(syncPollTimeout):
  			log.Warningf("Synchronisation polling timed out after %s", syncPollTimeout)
  			return
  		}
  	}
  }
docs: // poll polls the synchronisation server for notifications, then dispatches
  // them for processing.