public function each(callable $handleResult)
    {
        return Promise\coroutine(function () use ($handleResult) {
            $nextToken = null;
            do {
                $command = $this->createNextCommand($this->args, $nextToken);
                $result = (yield $this->client->executeAsync($command));
                $nextToken = $this->determineNextToken($result);
                $retVal = $handleResult($result);
                if ($retVal !== null) {
                    yield Promise\promise_for($retVal);
                }
            } while ($nextToken);
        });
    }