title: The failed() method is not being called when an Job fails in Laravel 5.4
body: <p>Currently im creating a job to be queued but for some reason the <code>failed()</code> method is not being triggered when the code executed in the <code>handle()</code> method of the job throws an exception. Is this some kind of bug in Laravel or am I doing something wrong? the Queue::failing() method in my AppServiceProvider IS being called</p>
  
  <pre><code>  &lt;?php
      namespace App\Jobs;
  
      use App\Models\Email;
      use Carbon\Carbon;
      use Illuminate\Bus\Queueable;
      use Illuminate\Queue\SerializesModels;
      use Illuminate\Queue\InteractsWithQueue;
      use Illuminate\Contracts\Queue\ShouldQueue;
  
      class MyCommand implements ShouldQueue
      {
          use InteractsWithQueue, Queueable, SerializesModels;
  
          protected $lead;
  
          /**
           * Create a new job instance.
           */
          public function __construct($lead)
          {
              $this-&gt;lead = $lead;
          }
  
          /**
           * Execute the job.
           */
          public function handle()
          {
              throw new \Exception("error!");
          }
  
          /**
           * The job failed to process.
           *
           * @param \Exception $exception
           */
          public function failed(\Exception $exception)
          {
              \Log::critical('wooot');
          }
  }
  </code></pre>
  
  <p>In the above job. The failed() method is never being called. We use supervisor to keep the queue running </p>
  
  <p>Thank</p>