```typescript
/**
 * Returns the result of dividing `a` by `b`.
 * Throws an Error if `b` is zero or if either `a` or `b` is not a finite number.
 */
export function safeDivide(a: number, b: number): number {
  if (isNaN(b) || !isFinite(b)) {
    throw new Error('Cannot divide by non-finite value');
  }
  if (isNaN(a) || !isFinite(a)) {
    throw new Error('Cannot divide by non-finite value');
  }
  if (b === 0) {
    throw new Error('Division by zero is not allowed');
  }
  return a / b;
}
```