function fetchUsers(int $limit = 100, string $before = '', string $after = '') {
        return (new \React\Promise\Promise(function (callable $resolve, callable $reject) use ($limit, $before, $after) {
            $query = array('limit' => $limit);
            
            if(!empty($before)) {
                $query['before'] = $before;
            }
            
            if(!empty($after)) {
                $query['after'] = $after;
            }
            
            $this->client->apimanager()->endpoints->channel
                ->getMessageReactions($this->message->channel->getId(), $this->message->id, $this->emoji->identifier, $query)
                ->done(function ($data) use ($resolve) {
                    foreach($data as $react) {
                        $user = $this->client->users->patch($react);
                        $this->users->set($user->id, $user);
                    }
                    
                    $resolve($this->users);
                }, $reject);
        }));
    }