public function reject($reason)
{
if ($this->state === self::PENDING) {
$this->state = self::REJECTED;
$this->reason = $reason;
while (count($this->subscribers) > 0) {
$subscriber = array_shift($this->subscribers);
$this->privateReject($subscriber['onreject'], $subscriber['next'], $reason);
}
}
}