code: async def _get_response(self, msg):
          
          try:
              protocol = await self._get_protocol()
              pr = protocol.request(msg)
              r = await pr.response
              return pr, r
          except ConstructionRenderableError as e:
              raise ClientError("There was an error with the request.", e)
          except RequestTimedOut as e:
              await self._reset_protocol(e)
              raise RequestTimeout('Request timed out.', e)
          except (OSError, socket.gaierror, Error) as e:
              # aiocoap sometimes raises an OSError/socket.gaierror too.
              # aiocoap issue #124
              await self._reset_protocol(e)
              raise ServerError("There was an error with the request.", e)
          except asyncio.CancelledError as e:
              await self._reset_protocol(e)
              raise e
docs: Perform the request, get the response.