code: func (conn *Conn) outWorker() {
  	for msg := range conn.out {
  		err := conn.SendMessage(msg)
  		conn.callsLck.RLock()
  		if err != nil {
  			if c := conn.calls[msg.serial]; c != nil {
  				c.Err = err
  				c.Done <- c
  			}
  			conn.serialLck.Lock()
  			delete(conn.serialUsed, msg.serial)
  			conn.serialLck.Unlock()
  		} else if msg.Type != TypeMethodCall {
  			conn.serialLck.Lock()
  			delete(conn.serialUsed, msg.serial)
  			conn.serialLck.Unlock()
  		}
  		conn.callsLck.RUnlock()
  	}
  }
docs: // outWorker runs in an own goroutine, encoding and sending messages that are
  // sent to conn.out.