use bufferred channel to nonblocking timeouted result