diff -r a969b42e6e2b Doc/library/asyncio-stream.rst --- a/Doc/library/asyncio-stream.rst Sat Sep 06 20:40:00 2014 +1000 +++ b/Doc/library/asyncio-stream.rst Fri Sep 12 10:37:01 2014 +0200 @@ -170,16 +170,22 @@ .. method:: drain() - Wait until the write buffer of the underlying transport is flushed. + Let the write buffer of the underlying transport a chance to be flushed. The intended use is to write:: w.write(data) yield from w.drain() - When the transport buffer is full (the protocol is paused), block until - the buffer is (partially) drained and the protocol is resumed. When there - is nothing to wait for, the yield-from continues immediately. + When the size of the transport buffer reaches the high-water limit (the + protocol is paused), block until the size of the buffer is drained down + to the low-water limit and the protocol is resumed. When there is nothing + to wait for, the yield-from continues immediately. + + Yielding from `drain()` gives the opportunity for the loop to schedule + the write operation and flush the buffer. It should especially be used + when a possibly large amount of data is written to the transport, + and the coroutine does not yield-from between calls to `write*()`. This method is a :ref:`coroutine `.