public function getFields()
{
if ($this->result->state >= ResultProxy::COLUMNS_FETCHED) {
return new Success($this->result->columns);
} else {
$deferred = new Deferred();
$this->result->deferreds[ResultProxy::COLUMNS_FETCHED][] = [$deferred, &$this->result->columns, null];
return $deferred->promise();
}
}