[channel] use fetch() to create a channel on the fly