':return: A Deferred that fires when the desired scenario is
established (e.g. that a certain load is being applied).
:raise RequestRateNotReached: if the target rate could not be
reached.'

def run_scenario(self, result):

    self.loop.start(interval=1)
    def reached_target_rate():
        return (self.rate_measurer.rate() >= self.rate_tolerated)
    def handle_timeout(failure):
        failure.trap(CancelledError)
        raise RequestRateNotReached()
    waiting_for_target_rate = loop_until(self.reactor, reached_target_rate, repeat(1))
    timeout(self.reactor, waiting_for_target_rate, self.timeout)
    waiting_for_target_rate.addErrback(handle_timeout)
    def monitor_scenario_status(result):
        self.monitor_loop.start(interval=1)
    waiting_for_target_rate.addCallback(monitor_scenario_status)
    return waiting_for_target_rate
