code: func (c *RPCClient) Stream(filter string, ch chan<- map[string]interface{}) (StreamHandle, error) {
  	// Setup the request
  	seq := c.getSeq()
  	header := requestHeader{
  		Command: streamCommand,
  		Seq:     seq,
  	}
  	req := streamRequest{
  		Type: filter,
  	}
  
  	// Create a monitor handler
  	initCh := make(chan error, 1)
  	handler := &streamHandler{
  		client:  c,
  		initCh:  initCh,
  		eventCh: ch,
  		seq:     seq,
  	}
  	c.handleSeq(seq, handler)
  
  	// Send the request
  	if err := c.send(&header, &req); err != nil {
  		c.deregisterHandler(seq)
  		return 0, err
  	}
  
  	// Wait for a response
  	select {
  	case err := <-initCh:
  		return StreamHandle(seq), err
  	case <-c.shutdownCh:
  		c.deregisterHandler(seq)
  		return 0, clientClosed
  	}
  }
docs: // Stream is used to subscribe to events