message: reset the context even if the test fails
diff: @@ -8,11 +8,12 @@ type ReturnFunction = (time: Seconds) => void;
  export async function Offline(
  callback: (context: OfflineContext) => void | ReturnFunction | ReturnFunction[] | Promise<void | ReturnFunction> | void,
  - duration = 0.1, channels = 1, sampleRate: number = 44100,
  + duration = 0.1, channels = 1, sampleRate = 44100,
  ): Promise<TestAudioBuffer> {
  const originalContext = getContext();
  const offline = new OfflineContext(channels, duration + 1 / sampleRate, sampleRate);
  setContext(offline);
  + try {
  let retFunction = callback(offline);
  if (retFunction instanceof Promise) {
  retFunction = await retFunction;
  @@ -26,9 +27,11 @@ export async function Offline(
  offline.on("tick", () => fn(offline.now()));
  });
  }
  - setContext(originalContext);
  const buffer = await offline.render();
  return new TestAudioBuffer(buffer.get() as AudioBuffer);
  + } finally {
  + setContext(originalContext);
  + }
  }
  export function whenBetween(value: Seconds, start: Seconds, stop: Seconds, callback: () => void): void {
  