code: def transfer_and_wait(
              self,
              registry_address: PaymentNetworkID,
              token_address: TokenAddress,
              amount: TokenAmount,
              target: Address,
              identifier: PaymentID = None,
              transfer_timeout: int = None,
              secret: Secret = None,
              secret_hash: SecretHash = None,
      ):
          
          # pylint: disable=too-many-arguments
  
          payment_status = self.transfer_async(
              registry_address=registry_address,
              token_address=token_address,
              amount=amount,
              target=target,
              identifier=identifier,
              secret=secret,
              secret_hash=secret_hash,
          )
          payment_status.payment_done.wait(timeout=transfer_timeout)
          return payment_status
docs: Do a transfer with `target` with the given `amount` of `token_address`.