How to program using USBASP and keep bootloader

Thanks, I finally find that without bootloader watchdog still work.
Anyway please see what worng with my code that causes watchdog stop working.
I know that it will work if I just comment out blink led in setup,
but I do not know why.

#include <avr/wdt.h>

void setup()
{
  wdt_disable();
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);   // without this line, work fine
  delay(100);                      // without this line, work fine
  digitalWrite(13, LOW);    // without this line, work fine
  delay(100);                      // without this line, work fine
  wdt_enable(WDTO_4S);
  wdt_reset();
}

void loop()
{
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);   // set the LED off
  delay(1000);              // wait for a second        
  wdt_reset();
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);   // set the LED off
  delay(1000);              // wait for a second         
  wdt_reset();
  digitalWrite(13, HIGH);   // set the LED on
  delay(5000);              // wait for 5 second to test watchdog
  wdt_reset();
}