docs: def receive(self, what=None):
          """Receive some transmissions.
  
          Received transmissions are marked as received, then their infos are
          passed to update().
  
          "what" can be:
  
              1. None (the default) in which case all pending transmissions are
                 received.
              2. a specific transmission.
  
          Will raise an error if the node is told to receive a transmission it has
          not been sent.
  
          """
          # check self is not failed
          if self.failed:
              raise ValueError("{} cannot receive as it has failed."
                               .format(self))
  
          received_transmissions = []
          if what is None:
              pending_transmissions = self.transmissions(direction="incoming",
                                                         status="pending")
              for transmission in pending_transmissions:
                  transmission.status = "received"
                  transmission.receive_time = timenow()
                  received_transmissions.append(transmission)
  
          elif isinstance(what, Transmission):
              if what in self.transmissions(direction="incoming",
                                            status="pending"):
                  transmission.status = "received"
                  what.receive_time = timenow()
                  received_transmissions.append(what)
              else:
                  raise(ValueError("{} cannot receive {} as it is not "
                                   "in its pending_transmissions"
                                   .format(self, what)))
          else:
              raise ValueError("Nodes cannot receive {}".format(what))
  
          self.update([t.info for t in received_transmissions])