We consider "opportunistic" downlink scheduling of data traffic in a wireless network. In particular, we focus on the delay performance of such schedulers. First a channel-dependent scheduling algorithm is considered that maximizes throughput by always transmitting to the user with the best channel conditions. The delay distribution of this scheduling rule is analyzed and asymptotic results are given when the number of competing users becomes large. Simulations show these asymptotic results are a good approximation for even a small number of users. This scheduling rule may result in unfair treatment of users that have relative bad channels for a long period of time; to remedy this we propose a simple utility-based scheduling algorithm. The motivation is to maximize the time-averaged utility, where utility is a decreasing function of the delay incurred when serving a request. The scheduling algorithm takes into account both the utility function and the channel state. We give simulation results that characterize the performance of the scheduling algorithm. The effect of the temporal correlation of the channel of the performance is also studied.