docs: def do_put(self, uri, resource, timeout, custom_headers):
          """Helps to make put requests.
  
          Args:
              uri: URI of the resource
              timeout: Time out for the request in seconds.
              custom_headers: Allows to set custom http headers.
  
          Retuns:
              Returns Task object
          """
          self.validate_resource_uri(uri)
  
          task, body = self._connection.put(uri, resource, custom_headers=custom_headers)
  
          if not task:
              return body
  
          return self._task_monitor.wait_for_task(task, timeout)