public function accept()
    {
        $deferred = new Deferred();

        if ($this->revoked) {
            $deferred->reject(new \Exception('This invite has been revoked.'));

            return $deferred->promise();
        }

        if ($this->uses >= $this->max_uses) {
            $deferred->reject(new \Exception('This invite has been used the max times.'));

            return $deferred->promise();
        }

        $this->http->post("invite/{$this->code}")->then(
            \React\Partial\bind_right($this->resolve, $deferred),
            \React\Partial\bind_right($this->reject, $deferred)
        );

        return $deferred->promise();
    }