class_docstr: Reusable flow control logic for StreamWriter.drain().
  
  This implements the protocol methods pause_writing(),
  resume_writing() and connection_lost().  If the subclass overrides
  these it must call the super methods.
  
  StreamWriter.drain() must wait for _drain_helper() coroutine.
class_docstr_tok: ["Reusable","flow","control","logic","for","StreamWriter.drain","(",")",".","This","implements","the","protocol","methods","pause_writing","(",")",",","resume_writing","(",")","and","connection_lost","(",")",".","If","the","subclass","overrides","these","it","must","call","the","super","methods",".","StreamWriter.drain","(",")","must","wait","for","_drain_helper","(",")","coroutine","."]
code: def __init__(self, loop=None):
      if loop is None:
          self._loop = events.get_event_loop()
      else:
          self._loop = loop
      self._paused = False
      self._drain_waiters = collections.deque()
      self._connection_lost = False
  
imports: import collections
  import socket
  import sys
  import warnings
  import weakref
  from .None import coroutines
  from .None import events
  from .None import exceptions
  from .None import format_helpers
  from .None import protocols
  from .log import logger
  from .tasks import sleep
label_desc: Use image node_id 1 to create a new FlowControlMixin object from inherited base classes: protocols with example: obj = FlowControlMixin(loop)