code: func (a *Airport) processRunway(fl flight.Info) {
  	flightID := fmt.Sprintf(flightIDFormat, fl.Airline, fl.Number)
  
  	if fl.Status == flight.Status_arrival {
  		a.log.Debugf("%s%s approaching runway\n", flightID, a.motions[fl.Status])
  		_, err := a.arrivalBroker.Delete(flightID)
  		if err != nil {
  			a.log.Errorf("processRunway(%s) failed: %s", flightID, err)
  		}
  		a.land(fl)
  
  		// send to departure or hangar
  		if rand.Float64() <= hangarThreshold {
  			err = a.hangarBroker.Put(makeHangarKey(fl), &fl, datasync.WithTTL(randomDuration(hangarDurationLow, hangarDurationHigh)))
  		} else {
  			err = a.departureBroker.Put(flightID, &fl)
  		}
  		if err != nil {
  			a.log.Errorf("processRunway(%s) failed: %s", flightID, err)
  		}
  	} else {
  		a.log.Debugf("%s%s approaching runway\n", flightID, a.motions[fl.Status])
  		_, err := a.departureBroker.Delete(flightID)
  		if err != nil {
  			a.log.Errorf("processRunway(%s) failed: %s", flightID, err)
  		}
  		a.takeOff(fl)
  		a.Lock()
  		delete(a.flightRadar, flightID)
  		a.Unlock()
  	}
  }
docs: // Runway can serve one flight at a time. If flight status is 'arrival', the plane lands and is either sent
  // departure or to hangar (random chance)