code: async def _get(self):
          
          input_bag = await self.input.get()
  
          # Store or check input type
          if self._input_type is None:
              self._input_type = type(input_bag)
          elif type(input_bag) != self._input_type:
              try:
                  if self._input_type == tuple:
                      input_bag = self._input_type(input_bag)
                  else:
                      input_bag = self._input_type(*input_bag)
              except Exception as exc:
                  raise UnrecoverableTypeError(
                      "Input type changed to incompatible type between calls to {!r}.\nGot {!r} which is not of type {!r}.".format(
                          self.wrapped, input_bag, self._input_type
                      )
                  ) from exc
  
          # Store or check input length, which is a soft fallback in case we're just using tuples
          if self._input_length is None:
              self._input_length = len(input_bag)
          elif len(input_bag) != self._input_length:
              raise UnrecoverableTypeError(
                  "Input length changed between calls to {!r}.\nExpected {} but got {}: {!r}.".format(
                      self.wrapped, self._input_length, len(input_bag), input_bag
                  )
              )
  
          self.increment("in")  # XXX should that go before type check ?
  
          return input_bag
docs: Read from the input queue.
  
          If Queue raises (like Timeout or Empty), stat won't be changed.