code: def status(self):
          
          connection = self.connection()
  
          # the connection instance was destroyed but someone kept
          # a separate reference to the monitor for some reason
          if not connection:
              return self.DISCONNECTED
  
          # connection cleanly disconnected or not yet opened
          if not connection.ws:
              return self.DISCONNECTED
  
          # close called but not yet complete
          if self.close_called.is_set():
              return self.DISCONNECTING
  
          # connection closed uncleanly (we didn't call connection.close)
          stopped = connection._receiver_task.stopped.is_set()
          if stopped or not connection.ws.open:
              return self.ERROR
  
          # everything is fine!
          return self.CONNECTED
docs: Determine the status of the connection and receiver, and return
          ERROR, CONNECTED, or DISCONNECTED as appropriate.
  
          For simplicity, we only consider ourselves to be connected
          after the Connection class has setup a receiver task. This
          only happens after the websocket is open, and the connection
          isn't usable until that receiver has been started.