be able to handle exception by channel.throw(err)