JavaScript Web
// Async HTTP fetch with exponential-backoff retry
const MAX_RETRIES = 3;

async function fetchWithRetry(url, options = {}, retries = MAX_RETRIES) {
  try {
    const response = await fetch(url, {
      headers: { 'Content-Type': 'application/json', ...options.headers },
      ...options,
    });
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}: ${response.statusText}`);
    }
    return await response.json();
  } catch (err) {
    if (retries > 0) {
      const delay = 2 ** (MAX_RETRIES - retries) * 200;
      console.warn(`Retrying in ${delay}ms… (${retries} left)`);
      await new Promise((res) => setTimeout(res, delay));
      return fetchWithRetry(url, options, retries - 1);
    }
    throw err;
  }
}

// Binary-search tree — in-order traversal
class TreeNode {
  constructor(val, left = null, right = null) {
    this.val   = val;
    this.left  = left;
    this.right = right;
  }
}

function inorder(node, result = []) {
  if (!node) return result;
  inorder(node.left, result);
  result.push(node.val);
  inorder(node.right, result);
  return result;
}

const tree = new TreeNode(4,
  new TreeNode(2, new TreeNode(1), new TreeNode(3)),
  new TreeNode(6, new TreeNode(5), new TreeNode(7)),
);

console.log(inorder(tree)); // [1, 2, 3, 4, 5, 6, 7]

// Iterator protocol
function* range(start, end, step = 1) {
  for (let i = start; i < end; i += step) yield i;
}

const evens = [...range(0, 20, 2)];
console.log(evens);