Implement useAsync(asyncFn) returning the lifecycle states:'idle' → 'loading' → 'success' | 'error'.
solve(behavior) returns the final { status, data, error }.behavior: 'success' resolves with 'data!', 'error' rejects with 'oops'.
Sample tests